Existem dois modelos básicos de transmissão de eventos em uma arquitetura orientada a eventos
Mensagens de eventos ou modelo publicar/assinar
Nas mensagens de eventos ou no modelo publicar/assinar, os consumidores de eventos fazem uma assinatura em um tipo ou tipos de mensagens publicadas pelos produtores de eventos. Quando um produtor de evento publica um evento, a mensagem é enviada diretamente para todos os assinantes que desejam consumi-la.
Normalmente, um message broker cuida da transmissão de mensagens de eventos de entre editores e assinantes. O broker recebe as mensagens do evento, converte-as se necessário, mantém a ordem dessas mensagens em relação as outras, disponibiliza-as para que os assinantes possam consumi-las e, em seguida, exclui as mensagens após serem consumidas, para que não sejam consumidas novamente.
Fluxo de eventos
No modelo de fluxo de eventos, os produtores de eventos publicam fluxos de eventos em um broker. Os consumidores de eventos fazem uma assinatura para os fluxos, mas, em vez de receber e consumir todos os eventos assim que são publicados, os consumidores podem entrar nos fluxos a qualquer momento e consumir somente os eventos que desejarem. A principal diferença é que os eventos são retidos pelo broker mesmo após o recebimento pelos consumidores.
Uma plataforma de fluxo de dados, como o Apache Kafka, gerencia a criação de logs e a transmissão de volumes enormes de eventos com altíssima produtividade (literalmente trilhões de eventos registrados por dia, em tempo real e sem atrasos no desempenho). Uma plataforma de fluxo oferece determinadas características que um message broker não oferece:
- Persistência de eventos: como os consumidores podem consumir eventos a qualquer momento após serem publicados, os registros de fluxo de eventos são persistentes, ou seja, são mantidos por um período configurável, que pode ser desde frações de segundo até por tempo ilimitado. Isso permite que os aplicativos de fluxo de eventos processem dados históricos, assim como dados em tempo real.
- Processamento de eventos complexos: assim como as mensagens de eventos, o fluxo de eventos pode ser usado pelo processamento de evento simples, no qual cada evento publicado aciona a transmissão e o processamento de um ou mais consumidores específicos. Porém, ele pode ser usado também para o processamento de eventos complexos, no qual os consumidores de eventos processam séries inteiras de eventos e toma ações baseadas no resultado.