RabbitMQ é um software de mensageria (message-broker) de código aberto que permite que aplicativos se comuniquem uns com os outros usando filas de mensagens.
Aplicação simula um MicroServiço de a atualização de estoque de uma loja virtual. Podemos enviar o código do produto e quantidade através do RabbitMQ utilizando Java com Spring. A aplicação também conta com a utilização do Prefetch Count e um Error Handler. Através de uma aplicação Java, fazemos o consumo da fila de Estoque Através de outra aplicação NodeJS, realizamos o consumo da fila de Preço.
Prefetch Count com RabbitMQ é um limitador de mensagens de envio ao consumidor.
Exemplo: Em uma aplicação de envio de emails em que temos um produtor e consumidor, o produtor dispara e envia centenas de milhares de requisições para o RabbitMQ. Como essas mensagens são gerenciadas? Existe limites?
O Prefetch Count serve como limitador de mensagens não confirmadas a serem enviadas a consumidores que ficará em um buffer em memória.
Já que o RabbitMQ envia as mensagens aos consumidores de forma assíncrona, então podemos estabelecer um limite com o Prefetch Count.
Essa configuração é importante pois podemos tornar o processo veloz e mais performatico.
O tratamento de exceções junto ao RabbitMQ é muito importante! Quando uma exceção não está sendo tratada e é lançada dentro do consumo de uma fila, essa mensagem é enviada de volta a fila, e isso gera um loop infinito!
Caso uma exceção seja do tipo FATAL, significa que ela não deve ser retornada a fila, e deve ser rejeitada.