

This page explains the purpose of the Dispatcher and the Performer within Curator's queue system. The goal is to help users, automation analysts, operations leads, and developers understand when to use each role, how they work together, and what to watch out for when designing a queue-based automation.
Dispatcher and Performer form the queues' producer and consumer model. The Dispatcher creates work items. The Performer processes those items.
In a traditional automation, a single robot can read a spreadsheet and process all rows from start to finish. This model works for simple flows, but becomes limited when volume grows, when multiple machines need to work together, or when the operation needs to track status per item.
With queues, the process is divided into two responsibilities:
Source system -> Dispatcher -> Queue in Curator -> Performer -> Target system
In this flow:
Separating Dispatcher and Performer helps scale processing, reduce duplication risk, track failures more clearly, and reprocess only the necessary items.
The Dispatcher is the automation responsible for feeding the queue. It collects data from a source, validates what needs to be sent, and creates queue items so other robots can process them later.
Common data sources:
Example: in an order process, the Dispatcher can query pending orders in the source system and create a queue item for each order that needs to be integrated.
The Dispatcher should not execute all the business work of each item. It should not, for example, open each order, fill in the target system, confirm the processing, and generate the final protocol. That responsibility belongs to the Performer.
This separation prevents a failure in an individual case from blocking the entire input load. The Dispatcher only prepares the queue; the Performer executes the work item by item.
The Dispatcher usually finishes when it completes reading the source and creates the corresponding items in the queue. It does not need to run continuously. In recurring operations, it is common to schedule the Dispatcher to run at defined times, for example:
The Performer is the automation responsible for consuming queue items. It fetches the next available item, executes the business rule, and tells Curator whether the item finished with success or failure.
Example: in an order process, the Performer can take an order from the queue, open the target system, register the integration, save the generated protocol, and mark the item as success.
Fetch next item -> Process -> Record result -> Fetch next item
When there are no more items available, the Performer terminates normally. To keep processing continuous, the operation can run the Performer again via scheduling, an execution queue, or another mechanism defined by the team.
A queue can be consumed by multiple Performers at the same time. This allows distributing the volume across machines, robot users, or parallel instances of the same automation.
Orders Queue -> Performer 1
-> Performer 2
-> Performer 3
Curator coordinates item delivery to prevent two Performers from processing the same item simultaneously. Even so, the automation must be idempotent: if an item is repeated due to retry or an operational action, it must not create duplication in the target system.
Dispatcher and Performer communicate through the queue. They do not need to run on the same machine, at the same time, or in the same project. The meeting point is the queue item.
A common design is:
1 Dispatcher -> 1 queue -> multiple Performers
The Dispatcher defines which items enter. The Performer defines how each item is executed. The queue keeps the state between these two stages.
For the model to work well, Dispatcher and Performer need to agree on the item's data format. This agreement is called the data contract.
The Dispatcher must create items with fields the Performer knows how to interpret. The Performer must handle absence, invalid format, and unexpected values clearly, recording a business failure when the data does not allow continuing.
Item example:
{
"reference": "PED-88421",
"priority": "normal",
"specific_data": {
"cliente_id": "C-1024",
"numero_pedido": "88421",
"valor_total": 1520.75,
"canal": "portal"
}
}
In this example:
reference is the business identifier used to locate and audit the item.priority indicates the relative processing order.specific_data contains the data the automation needs to execute the case.Use Dispatcher and Performer when the process has multiple independent units of work and needs per-item operational control. This model is recommended when you need:
Examples:
Not every process needs to be split into Dispatcher and Performer.
| Model | When to use |
|---|---|
| Base Model | The process is still small or experimental; local spreadsheet input is sufficient; there is no need for parallelism; the team is still validating the business rule. |
| Combined model (feeds and consumes in the same agent) | The source is simple; volume is low or medium; the operation does not need to separate responsibilities; the team wants fewer projects to maintain. |
| Separate Dispatcher and Performer | Volume may grow; more than one machine needs to process items; the data source differs from execution; the operation needs to control input and processing independently; individual failures must not block the entry of new items. |
A recommended flow for creating this type of automation is:
During testing, validate at least these scenarios:
On the queues screen, monitor:
This information helps decide whether to run more Performers, pause the Dispatcher, fix source data, retry items, or investigate a recurring failure.
Frequent mistakes in Dispatcher and Performer projects:
Avoiding these mistakes makes the queue more predictable, reduces operational rework, and facilitates auditing.