Queue(큐)란?
Queue(큐)는 UiPath Orchestrator에서 데이터를 저장하고 관리하는 구조로, 대량의 데이터를 자동화 프로세스에서 효율적으로 처리할 수 있도록 도와줍니다.
특히 Dispatcher와 Performer 패턴에서 중요한 역할을 합니다.
1. Queue의 역할
✅ 대량 데이터 처리 최적화
- 수천~수만 개의 데이터를 개별 항목으로 저장하고 처리 가능
- 여러 로봇이 동시에 데이터를 처리할 수 있음 (병렬 처리 지원)
✅ 비동기 작업 수행
- 데이터를 한 번에 저장하고 필요할 때마다 가져와서 실행 가능
- 한 프로세스가 데이터를 수집하면, 다른 프로세스가 나중에 실행할 수도 있음
✅ 자동화 안정성 향상
- 작업 실패 시 재시도(Retry) 설정 가능
- 오류 발생 시 개별 항목만 재처리하면 되므로 전체 프로세스 영향을 줄임
✅ 작업 분배(Load Balancing) 지원
- 여러 로봇이 하나의 큐를 공유하여 작업을 병렬로 실행 가능
- 로봇 리소스를 효율적으로 활용 가능
2. Queue의 주요 개념
① Queue Item (큐 항목)
- Queue에 저장되는 개별 데이터 항목
- 예: 고객 주문 정보, 이메일 주소, 송장 데이터 등
- 각 Queue Item은 상태(Status)를 가짐
② Transaction Item (트랜잭션 항목)
- Queue에서 처리 중인 현재 작업 항목
- Performer가 Queue에서 가져온 데이터를 의미
- 한 번에 하나씩 가져와서 처리
③ Queue Item 상태(Status)
| 상태 | 설명 |
|---|
| New | Queue에 추가되었으나 아직 처리되지 않음 |
| In Progress | 현재 로봇이 처리 중인 항목 |
| Successful | 작업이 성공적으로 완료됨 |
| Failed | 작업이 실패함 (재시도 가능) |
| Abandoned | 지정된 시간 내 처리되지 않아 만료됨 |
| Deleted | 오케스트레이터에서 Item을 삭제한 경우 |
| Retired | Item이 응용프로그램 예외로 인해 실패한 후 다시 시도된 경우 |
3. Queue의 활용 예시
✅ 설명
- Dispatcher : 데이터를 Queue에 추가(Enqueue)
- Performer : Queue에서 데이터를 가져와(Dequeue)처리
✅ 주요 특징
- 비동기 처리 : 데이터를 생산하는 로봇과 소비하는 로봇이 분리되어 동시에 작업 가능
- 대규모 데이터 처리 : 대량의 데이터를 여러 Performer로봇이 병렬로 처리
✅ 사용 예시
- 대량의 주문 데이터를 처리(Dispatcher가 주문 데이터를 Queue에 추가,Performer가 이를 하나씩 처리)
- 웹에서 데이터를 크롤링한 후, 각 데이터를 Queueu에 저장하고 후속 작업을 Performer가 수행
대규모 프로젝트의 작업 분리
✅ 설명
- 하나의 프로젝트를 여러 단계로 나누어 각 단계의 작업을 Queue에 추가
✅ 사용 예시
- 첫 번째 단계에서 데이터를 수집하여 Queue에 추가, 두 번째 단계에서 데이터를 처리
- 각 단계의 로봇 간 독립성 유지
분산된 데이터 처리
✅ 설명
- Queue를 사용해 서로 다른 소스에서 들어온 데이터를 한 곳에서 통합 처리
✅ 사용 예시
- API로 들어온 주문 데이터와 파일로 업로드된 주문 데이터를 하나의 Queue에 통합하여 처리
- 서로 다른 형식의 데이터를 Queue를 통해 표준화
병렬 작업 분배
✅ 설명
✅ 사용 예시
- 여러 Performer로봇이 동일한 Queue를 참조하여 각자 다른 항목을 처리
- 대량의 데이터 처리 속도를 개선
4. Queue 사용 방법 (UiPath 예제)
📌 ① Queue에 데이터 추가 (Dispatcher 역할)
- Add Queue Item 액티비티 사용

- Item Information에 큐에 저장할 데이터 입력

- 큐에 "진행 중" 상태로 데이터가 저장된 모습

- Get Transaction Item 액티비티 사용
- Get Queue Items는 조회, 분석하는 용도이다




QueueItem 데이터 유형에서 데이터 추출
- SpecificContent로 문자열, 숫자(예: Int32), 날짜, 불리언 값을 추출할 수 있음.
- SpecificContent는 Queue에 저장된 데이터를 전체적으로 Dictionary<string, object> 형태로 반환
- Key를 통해 Value를 가져올 수 있다. 즉, queueItem.SpecificContent("키 이름")으로 Value값 추출 가능
- 이 때 Value는 Object 유형이므로 필요한 데이터 유형으로 변환해야 함.
- 특정 키의 데이터가 없는 경우 NullReferenceException이 발생할 수 있으므로, 키가 존재하는지 확인하거나 값이 null인지 체크 권장
📌 ③ Queue Item 상태 변경하기
- Get Queue Items 액티비티로 큐 조회하기
- 홈페이지의 큐의 트랜잭션을 확인하면 "조회중"이라고 나온다
- 이것을 Studio에서 끝까지 진행하여 "성공" 또는 "실패" 확인을 하여 입력을 해야한다

- 조회한 큐를 Set Transaction Status 액티비티로 상태 변경하기
- 성공하지 못할 경우 BusinessRuleException, SystemException과 같이 과제가 성공하지 못하는 경우->예외
- 예외인 경우에도 Set Transaction Status로 처리해 줘야 한다

📌 ④ Queue에서 복수의 항목 조회하기
- Get Queue Items 액티비티 사용

- 속성에서 조회할 큐의 상태 체크하기

- 삭제된 TestQueue의 항목은 4개


📌 ⑤ Queue에서 데이터 삭제하기
- Get Queue Items로 큐 아이템 가져오기
- Delete Queue Items 액티비티로 Get Queue Items로 가져온 큐 아이템 삭제하기

- 큐의 상태가 "진행 중"에서 "삭제됨"으로 변경되었다

📌 ⑥ 복수의 Queue를 하나씩 가져오기
- Add Queue Item 액티비티를 5번 반복하여 실행

- Get Queue Items 액티비티로 큐를 조회하기
- Set Transaction Status 액티비티로 조회한 큐아이템을 "성공"상태로 변경하기

- 실행 결과


📌 ⑦ Queue에서 데이터테이블을 행단위로 저장하기
- 데이터테이블 생성


- 반복문으로 데이터테이블을 순회하며 큐에 저장

- Bulk Add Queue Item 액티비티를 사용하면 데이터테이블을 한번에 큐에 저장할 수 있다

- 실행 결과



5. Queue 관련 액티비티의 차이점
1) Get Transaction Item vs Get Queue Item
| 특징 | Get Transaction Item | Get Queue Item |
|---|
| 목적 | 하나의 항목을 가져와 처리(In Progress로 전환) | 큐의 여러 항목을 조회(상태 변경 없음) |
| 결과 개수 | 단일 항목 | 여러 항목 |
| 상태 변경 여부 | 가져온 항목은 In Progress 상태로 자동 변경 | 상태 변경 없음 |
| 주요 사용 시나리오 | 항목을 처리하고 상태를 Successful 또는 Failed로 설정 | 큐 데이터 조회 분석 |
| 상태 필터링 | 지원되지 않음(New 상태 항목만 가져옴) | 지원 (Ne, In Progress, Failed 등 필터 가능) |
| 로봇 독점 접근 | 가져온 항목은 독점(다른 로봇은 접근 불가) | 독점 아님(다른 로봇도 동일 항목 접근 가능) |
- 작업이 필요한 경우 : Get Transaction Item을 사용하여 큐 항목을 가져오고 처리
- 데이터 조회 및 상태 분석 :Get Queue Items를 사용하여 다수의 항목을 가져와 분석
2) Add Transaction Item vs Add Queue Item
| 특징 | Add Transaction Item | Add Queue Item |
|---|
| 항목 상태 | 추가 시 "In Progress"로 설정 | 추가 시 "New" 상태로 설정 |
| 트랜잭션 | 항목 추가와 동시에 트랜잭션 시작 | 트랜잭션 시작하지 않음 |
| 반환 값 | QueueItem 변수로 반환 | 반환 값 없음 |
| 사용 목적 | 즉시 처리할 항목 추가 | 나중에 처리할 항목 큐에 추가 |
| 처리 방식 | 즉시 처리 | 대기 상태 |
6. Queue의 장점
✔ 대량의 데이터를 효율적으로 관리 가능
✔ 여러 로봇이 동시에 처리할 수 있어 자동화 속도 향상
✔ 작업 실패 시 재시도를 통해 안정성 보장
✔ Queue 기반 구조를 사용하면 자동화 프로세스를 확장 가능
7. 결론
✅ Queue는 UiPath에서 대량 데이터를 저장하고 처리하는 구조
✅ Dispatcher가 데이터를 Queue에 추가 → Performer가 가져와 처리
✅ 자동화 안정성과 속도를 높이는 핵심 요소