1
resposta

Deadletter

óla bom dia, Dentro do código do @RabbitListener ao lançar uma throw new RunTimeException("error").

Como que o Rabbit sabe que já tem que enviar para deadletter. Tipo, o que faz ele saber que tem que enviar.

Por que ao ler a mensagem parece que ele faz algum tipo de commit na queue para identificar que a mensagem já foi lida.

1 resposta

Olá José

Existem três situações em que uma mensagem não pode ser entregue após chegar ao RabbitMQ:

  1. Uma mensagem é negada pelo consumidor
  2. O TTL de uma mensagem expira
  3. A fila atinge a capacidade

No caso de um RunTimeException, o consumidor está negando a mensagem, o RabbitListener por baixo dos panos cuida de avisar o RabbitMQ que por sua vez irá enviar a mensagem para a DLQ por ter sido negada pelo consumidor.