큐 아이템 재시도에 대하여

UiPath 오케스트레이터 큐에는, 아래의 그림에서 보시는 것처럼, 작업이 실패하는 경우 재시도 하도록 설정하는 옵션이 있습니다. 재시도 여부와 최대 몇 번까지 재시도할지 설정할 수 있습니다.

큐를 생성할 때 Auto Retry 옵션을 Yes로 설정하면 큐아이템을 처리하다가 오류가 발생하는 경우 해당 아이템은 "Retried"로 처리하고 동일한 아이템을 큐에 추가하는 방식으로 재시도가 작동합니다. “Business” 타입의 오류인 경우에는 재시도하지 않고, “Application” 타입의 오류인 경우 최대 재시도 회수에 도달할 때까지 재시도 하게 됩니다.

그런데, 재시도를 위하여 새로 추가된 아이템은 큐의 가장 뒤에 존재하기 때문에, 앞에 존재하는 아이템을 다 처리한 후에야 다시 시도하게 됩니다. 다음 아이템으로 넘어가기 전에 실패한 아이템을 곧바로 재시도할 필요가 있는 경우에 사용할 수 있도록 기능을 추가한 Robotic Enterprise Framework을 아래의 링크에 올려두었으니 유용하게 사용하시기 바랍니다.

기존의 REFramework에 RetryProcess.xaml 파일을 추가했고, 아래와 같이 재시도를 구현했습니다.

“Business” 타입의 오류인 경우에는 재시도하지 않고, “Application” 타입의 오류인 경우 파라메타 "in_RetryCount"에 지정한 횟수까지만 재시도 하게 됩니다. Process.xaml에 전달하던 파라메타를 그대로 RetryProcess.xaml에 전달하면 됩니다.

Main.xaml에서는 Process.xaml 대신 RetryProcess.xaml을 invoke하도록 바뀌었고, Process.xaml은 이제 RetryProcess.xaml에서 invoke됩니다.

재시도 하기 전에 CloseAllApplication.xaml과, 이것이 실패하면 KillAllProcesses.xaml을, 그리고 마지막으로 InitAllApplications.xaml을 차례로 호출하여 애플리케이션들을 리셋합니다.

이 프레임워크를 이용하여 자동화한 프로세스로 처리될 큐는 큐 자체의 재시도 기능을 끄는 것이 바람직합니다. 큐의 재시도 기능에 의존하지 않고 프로세스가 자체적으로 재시도하기 때문입니다.

3 Likes

좋은 REFramework인 것 같네요.
큐를 쓸때 항상 문제인게 중간에 오류가 났을시 대처였는데
저는 큐를 두개(작업용 / 백업용) 같은걸 만들어서 작업용 큐를 가져다가 작업 후 백업용 큐에서 해당 데이터를 지우고 다음 큐데이터로 작업을 해야하나 고민했었습니다.

좋은 아이디어인 것 같습니다.