我目前正在开发一个涉及使用来自 RabbitMQ 代理的消息的项目。然而,我对 Spring Integration、AMQP 和 RabbitMQ 仍然很陌生。 我在使用格式错误的消息时遇到问题。当我的消费者收到格式错误的消息时,它会将其返回队列,然后 RabbitMQ 将其发送回,这会造成无限循环。 在 Spring Integration 文档中,有一些配置可以实现这种消息不会返回到队列。
但是我不明白如何实现它。 我想要的是能够配置某种具有类似
格式的 beanclass ExceptionHandler {
public void handle(Throwable e ) {
Logger.log("Some log ... we don't give a Sh** ... ") ;
}
}
我已经检查了3.9 Exception Handling部分 和 3.15.3 Message Listeners and the Asynchronous Case 但不幸的是我什么也听不懂。
因此,如果您有示例代码或链接,请将其发送给我,我将不胜感激。
最佳答案
是的,这是正确的解决方案之一 - 当您决定不应重新排队
消息时抛出AmqpRejectAndDontRequeueException
。
SimpleMessageListenerContainer
上还有 defaultRequeueRejected
,默认为 true
。
您也许应该看看 DLX/DLQ解决方案不丢失那些格式错误的消息。
请分享困扰您的 StackTrace。
在SimpleMessageListenerContainer
中有这样一段代码:
catch (AmqpRejectAndDontRequeueException rejectEx) {
/*
* These will normally be wrapped by an LEFE if thrown by the
* listener, but we will also honor it if thrown by an
* error handler.
*/
}
关于java - 使用 Spring Integration 和 RabbitMQ 时如何在消费者端处理格式错误的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227970/