跳到主要内容
版本:7.0.2

入站端点确认模式

DeepSeek V3 中英对照 Inbound Endpoint Acknowledge Mode

默认情况下,入站端点使用 AUTO 确认模式,这意味着当下游集成流完成时(或通过使用 QueueChannelExecutorChannel 将消息传递给另一个线程时),容器会自动确认消息。将模式设置为 NONE 会配置消费者,使其完全不使用确认机制(代理在消息发送后立即自动确认)。将模式设置为 MANUAL 允许用户代码在处理过程中的其他时间点确认消息。为支持此模式,端点会在 amqp_channelamqp_deliveryTag 头部中分别提供 ChanneldeliveryTag

你可以在 Channel 上执行任何有效的 Rabbit 命令,但通常只使用 basicAckbasicNack(或 basicReject)。为了避免干扰容器的操作,你不应保留对通道的引用,并且仅应在当前消息的上下文中使用它。

备注

由于 Channel 是对“活动”对象的引用,它无法被序列化,如果消息被持久化,该引用将会丢失。

以下示例展示了如何使用 MANUAL 确认模式:

@ServiceActivator(inputChannel = "foo", outputChannel = "bar")
public Object handle(@Payload String payload, @Header(AmqpHeaders.CHANNEL) Channel channel,
@Header(AmqpHeaders.DELIVERY_TAG) Long deliveryTag) throws Exception {

// Do some processing

if (allOK) {
channel.basicAck(deliveryTag, false);

// perhaps do some more processing

}
else {
channel.basicNack(deliveryTag, false, true);
}
return someResultForDownStreamProcessing;
}