Spring amqp 避免向DLQ/DLX发送消息

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

我们的应用程序使用org.springframework.cloud,SpringCloudStarterStreamRabbit框架,我们试图避免向DLQ发送特定消息并重试这些消息,这种行为应该是动态的,因为对于默认消息,重试和DLQ应该是有效的

根据本文件:

这篇有用的帖子:

似乎可以在spring AMQP中使用
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
应遵守该异常并放弃失败的消息