java - Spring Boot/RabbitMQ 避免 unack 消息

标签 java spring rabbitmq spring-integration spring-integration-amqp

@RabbitListener(queues="XYZ")
public void rabbitMsgReceiver(@Payload final UserProfile up, Message msg, Channel channel)  {

}

如果收到的消息不是 UserProfile 的有效 JSON,则会发生 ListenerExecutionFailedException,消息将发送至 取消确认状态。如何将消息发送到死信队列?

最佳答案

您可以配置死信队列策略,以便将未确认的消息发送到 dlq,而不是将它们放入原始队列

https://www.rabbitmq.com/dlx.html#using-policies

以您的队列 XYZ 为例,假设您为其设置了 XYZ-dlq :

sudo rabbitmqctl set_policy XYZ-dlq "^XYZ$" '{"dead-letter-exchange":"", "dead-letter-routing-key":"XYZ-dlq"}' --apply-to queues 

关于java - Spring Boot/RabbitMQ 避免 unack 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521838/

相关文章:

java - 如何使用 mapreduce wordcount 的输出进行进一步处理?

java - SimpleMessageListenerContainer - 从失败中恢复

rabbitmq - RabbitMQ如何判断一个队列在管理工具中状态是否为Active

Spring Webflux - 如何在 WebFilter 中调用响应式端点

java - @RestControllerAdvice 与 @ExceptionHandler 配对不会从数据类返回 JSON

java - 我在Spring框架中使用rabbitmq,如何在连接创建时调用basicRecover?

java - 将文件从AWS lambda tmp文件夹传输到sftp服务器

java - 如何以编程方式检测 Android 中是否正在运行任何屏幕录制进程/应用程序?

java - JTextField 似乎没有触发 PropertyChangeEvent

Spring Boot 如何在 application.properties 中为 yaml 设置 spring.config.location