Java 如何使用spring集成手动确认rabbitmq消息

Java 如何使用spring集成手动确认rabbitmq消息,java,spring,rabbitmq,spring-integration,Java,Spring,Rabbitmq,Spring Integration,我已经为入站通道创建了bean,其acknowledge属性为manual,并使用chain方法发布输出消息 <int-amqp:inbound-channel-adapter channel="InputChannel" queue-names="Input" connection-factory="connectionFactory" concurrent-consumers="1" message-converter="Converter" acknowle

我已经为入站通道创建了bean,其acknowledge属性为manual,并使用chain方法发布输出消息

<int-amqp:inbound-channel-adapter channel="InputChannel" 
    queue-names="Input" connection-factory="connectionFactory" concurrent-consumers="1" message-converter="Converter"  
      acknowledge-mode="MANUAL" prefetch-count="5"/>

<int:chain input-channel="InputChannel" output-channel="OutputChannel">

      <int:transformer method = "transform" >
        <bean class="com.sampleconverter" />
      </int:transformer>
        <int:service-activator method="transform">
             <bean class="com.Transformer" />
        </int:service-activator>
     <int:object-to-string-transformer />
   </int:chain>

你能帮我确认用手动确认模式处理的信息吗

提前感谢。

关于这一问题的专门段落:

将模式设置为
MANUAL
允许用户代码在处理过程中的其他某个点确认消息。为了支持这一点,在这种模式下,端点分别在amqp_通道和amqp_deliveryTag头中提供通道和deliveryTag


你能帮我把这个方法添加到哪里吗(sampleconverter,Transformer)@Artem BilanIt取决于你的逻辑。如果这是确定的,不要担心变压器的错误,这是完全可以承认之前。您甚至可以在链的末端创建一个新的服务激活器来执行此确认
@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;
}