Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Emitter vs MutinyEMitter

Estou dando uma "viajada", acredito que não entendi muito bem um fundamento desse tópico:

Quando estávamos falando do RabbitMQ, na maior parte do tempo, estávamos falando de @Incoming e @Outgoing .
Porém, partindo agora para o kafka, estamos mais com essa visão do Emitter, e eu não entendi quando seguir para o paradigma dos @Outgoings ou emmtier, muito menos a diferença prática dos dois tipos de emmiter.
Poderiam me ajudar?

1 resposta
solução!

Olá, Rodrigo! Como vai?

A sua dúvida sobre a diferença entre Emitter e MutinyEmitter em relação ao Kafka é bastante comum, especialmente quando estamos lidando com diferentes paradigmas de mensageria.

O Emitter e o MutinyEmitter são utilizados para enviar mensagens para um canal de saída, mas eles têm algumas diferenças importantes:

  1. Emitter: é a interface básica para enviar mensagens. Quando você usa um Emitter, está lidando com operações síncronas ou assíncronas básicas. Ele é usado principalmente quando você não precisa de um controle mais refinado sobre o fluxo de mensagens ou quando a simplicidade é desejada.

  2. MutinyEmitter: é uma extensão mais avançada e poderosa do Emitter. Ele é baseado na biblioteca Mutiny, que é uma biblioteca reativa para programação assíncrona. O MutinyEmitter permite um controle mais refinado sobre o fluxo de mensagens, como lidar com backpressure, falhas e operações assíncronas de forma mais elegante. No exemplo que você está vendo, o uso de MutinyEmitter permite que você envie mensagens de forma assíncrona e trate exceções de maneira mais fluida.

No seu caso, ao integrar com o Kafka, o uso do MutinyEmitter pode ser vantajoso se você precisar de uma programação mais reativa e quiser aproveitar as capacidades do Mutiny para lidar com fluxos de dados de forma mais sofisticada.

Por exemplo, no código que você mencionou, o MutinyEmitter é usado para enviar mensagens somente se a agência estiver inativa, e ele permite tratar exceções como JsonProcessingException de forma mais clara com o uso de Uni, que é uma abstração do Mutiny para operações assíncronas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.