AMQP连接器MULE ESB中MULE_自动和手动的区别
是否有人知道AMQP连接器(MULE)在ACK模式下的AMQP连接器MULE ESB中MULE_自动和手动的区别,mule,amqp,mule-studio,mule-el,mule-component,Mule,Amqp,Mule Studio,Mule El,Mule Component,是否有人知道AMQP连接器(MULE)在ACK模式下的MULE_AUTO和MANUAL之间的确切区别。因为我观察到了这一点 如果确认模式:AMQP_AUTO->一旦收到消息,它将被自动删除 若确认模式:MULE_AUTO->即使在成功拾取和传递消息后,消息仍存在于队列中 若确认模式:手动->即使在成功拾取和传递消息后,消息仍然存在于队列中。(与MULE_AUTO相同) 在MULE_AUTO和MANUAL中,如果我们要从外部删除消息,这两种情况都会发生。确切的区别是什么。我错过了什么吗 <
MULE_AUTO
和MANUAL
之间的确切区别。因为我观察到了这一点
- 如果确认模式:AMQP_AUTO->一旦收到消息,它将被自动删除
- 若确认模式:MULE_AUTO->即使在成功拾取和传递消息后,消息仍存在于队列中
- 若确认模式:手动->即使在成功拾取和传递消息后,消息仍然存在于队列中。(与MULE_AUTO相同)
<amqp:connector name="AMQP_Test" validateConnections="true"
host="***" ackMode="MULE_AUTO"
username="123" password="123!" />
您能告诉我我丢失的确切位置吗?使用
手动
,您必须手动确认(或拒绝)消息,如下所述:
本质上,这是通过以下方式实现的:
<amqp:acknowledge-message />
以及:
使用
MULE\u AUTO
,当流程处理完成时,MULE应自动确认消息。如果它不起作用,那一定是个bug。谢谢您的回复。我已经编辑了我的问题并添加了完整的配置。这就是我测试一个简单场景的方式。请您浏览一下我的编辑并给我建议。根据我的实际情况,在我的消费服务给出“200”回复之前,不应删除此消息。在这里,即使在获得成功响应消息后,队列中仍然存在该消息。我已选择使用“手动”。它按照您的建议执行所需的场景。但不知道为什么MULE_AUTO没有。感谢您的回复。您正在使用事务!你在问题的原始版本中没有提到这一点:(这改变了一切:MULE\u AUTO
在使用事务时被禁用,请参阅:我不知道为什么,但由于某些原因,事务没有在您的流中提交。可能是错误?您在日志中看到任何与事务相关的条目吗?在DEBUG
级别运行日志记录?
<amqp:acknowledge-message />
<amqp:reject-message requeue="true" />