Orquestradores de Integração
O framework fornece dois tipos de orquestradores para execução de integrações:
- PoolingIntegrationWorker → baseado em consultas periódicas (pooling).
- MessageProcessorWorker → baseado em mensageria (event-driven).
Cada orquestrador estende um serviço base que já implementa o tratamento de concorrência, agendamento e ciclo de vida do background service. O desenvolvedor precisa apenas definir como as integrações serão descobertas e configuradas.
PoolingIntegrationWorker
O PoolingIntegrationWorker é responsável por executar integrações em intervalos definidos.
Ele estende PoolingIntegrationService e exige a implementação do método:
protected override async Task<IEnumerable<IntegrationJob>> GetScheduledJobsAsync(
CancellationToken cancellationToken)
Esse método deve retornar uma lista de IntegrationJob, que define quais integrações serão executadas, em qual intervalo e se estão ativas.
As integrações podem ser carregadas de diversas fontes:
- Banco de dados
- Arquivo
appsettings.json - Variáveis de ambiente (ENV)
- Serviços de configuração (Azure App Config, AWS Parameter Store etc.)
TODO: Adicionar outros métodos que podem ser sobrescritos numa página especifica do PoolingInegrationWorker
A classe IntegrationJob
public class IntegrationJob
{
public string IntegrationName { get; set; }
public Type IntegrationType { get; set; }
public TimeSpan ExecutionInterval { get; set; }
public bool Enabled { get; set; } = true;
}
| Propriedade | Tipo | Descrição |
|---|---|---|
| IntegrationName | string | Nome amigável da integração. |
| IntegrationType | Type | Tipo da classe que implementa a integração. |
| ExecutionInterval | TimeSpan | Intervalo de execução periódica. |
| Enabled | bool | Flag para ativar/desativar a integração. |
MessageProcessorWorker
O MessageProcessorWorker é responsável por processar mensagens provenientes de tópicos/filas.
Ele estende MessageProcessorIntegrationService e exige a implementação do método:
protected override async Task<IEnumerable<ProcessorDefinition>> GetProcessorDefinitionsAsync(
CancellationToken ct)
Esse método deve retornar uma lista de ProcessorDefinition, que define como o worker vai se conectar e processar mensagens.
O ProcessorDefinition
public record ProcessorDefinition(
string IntegrationName,
string TopicName,
string SubscriptionName,
int MaxConcurrentCalls = 5);
| Propriedade | Tipo | Descrição | Valor Padrão |
|---|---|---|---|
| IntegrationName | string | Nome amigável da integração. | – |
| TopicName | string | Nome do tópico/queue de onde as mensagens serão lidas. | – |
| SubscriptionName | string | Assinatura que identifica a instância consumidora. | – |
| MaxConcurrentCalls | int | Define o grau de paralelismo no processamento. | 5 |
TODO: Adicionar outros métodos que podem ser sobrescritos numa página especifica do MessageProcessorWorker
- Use PoolingIntegrationWorker para integrações que dependem de consultas periódicas.
- Use MessageProcessorWorker para integrações que respondem a eventos/mensagens.
- Ambos seguem a mesma filosofia: o orquestrador gerencia concorrência e execução, enquanto o desenvolvedor apenas declara quais integrações devem rodar.