Skip to main content

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).
info

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;
}
PropriedadeTipoDescrição
IntegrationNamestringNome amigável da integração.
IntegrationTypeTypeTipo da classe que implementa a integração.
ExecutionIntervalTimeSpanIntervalo de execução periódica.
EnabledboolFlag 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);
PropriedadeTipoDescriçãoValor Padrão
IntegrationNamestringNome amigável da integração.
TopicNamestringNome do tópico/queue de onde as mensagens serão lidas.
SubscriptionNamestringAssinatura que identifica a instância consumidora.
MaxConcurrentCallsintDefine o grau de paralelismo no processamento.5

TODO: Adicionar outros métodos que podem ser sobrescritos numa página especifica do MessageProcessorWorker

Resumo
  • 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.