Java 如何使用spring集成手动确认rabbitmq消息
我已经为入站通道创建了bean,其acknowledge属性为manual,并使用chain方法发布输出消息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
<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;
}