Spring amqp 避免向DLQ/DLX发送消息
我们的应用程序使用org.springframework.cloud,SpringCloudStarterStreamRabbit框架,我们试图避免向DLQ发送特定消息并重试这些消息,这种行为应该是动态的,因为对于默认消息,重试和DLQ应该是有效的 根据本文件: 这篇有用的帖子: 似乎可以在spring AMQP中使用Spring amqp 避免向DLQ/DLX发送消息,spring-amqp,spring-cloud-stream,spring-rabbit,Spring Amqp,Spring Cloud Stream,Spring Rabbit,我们的应用程序使用org.springframework.cloud,SpringCloudStarterStreamRabbit框架,我们试图避免向DLQ发送特定消息并重试这些消息,这种行为应该是动态的,因为对于默认消息,重试和DLQ应该是有效的 根据本文件: 这篇有用的帖子: 似乎可以在spring AMQP中使用ImmediateAcknowledgeAmqpException将消息标记为已确认,而无需进一步处理。但是,当我们使用此代码时: @StreamListener(LogSin
ImmediateAcknowledgeAmqpException
将消息标记为已确认,而无需进一步处理。但是,当我们使用此代码时:
@StreamListener(LogSink.INPUT)
public void handle(Message<Map<String, Object>> message) {
if (message.getPayload().get("condition1").equals("abort")) {
throw new ImmediateAcknowledgeAmqpException("error, we don't want to send this message to DLQ");
}
...
}
我们错过什么了吗?有没有其他方法可以避免发布到DLQ并重新查询?
重新发布TODLQ
不考虑该异常;它仅在异常被抛出到容器时适用(方法causeChainHasImmediateAcknowledgeAmqpException()
)
重新发布会破坏该逻辑,因为不会向容器抛出异常
请针对Rabbit活页夹打开一个问题,republishToDlq
应遵守该异常并放弃失败的消息