1
是否有人知道在AMQP连接器(Mule)的ACK模式下MULE_AUTO
和MANUAL
之间的确切区别是什么。因为我观察到AMQP连接器中的MULE_AUTO和MANUAL之间的区别Mule ESB
- 如果ACK模式:AMQP_AUTO - >一旦消息被拾取,它被自动删除
- 如果ACK模式:MULE_AUTO - >消息拾取并成功传递即使之后,消息仍然存在于队列中。
- 如果确认模式:MANUAL - >消息拾取并在队列成功传递,消息仍然存在即使在(相同的情况下等MULE_AUTO)
在MULE_AUTO和MANUAL,这两种情况下,如果我们假定删除该消息在外部。什么是确切的区别。我错过了什么。
<amqp:connector name="AMQP_Test" validateConnections="true"
host="***" ackMode="MULE_AUTO"
username="123" password="123!" />
任何人都可以帮助我了解它。
编辑第2次:
我保持ACK为MULE_AUTO
。即使从消费的服务响应成功重新登录后,消息也不会被删除。不知道我错在哪里 请找到完成的config.xml。
<amqp:connector name="AMQP_Test" validateConnections="true" host="****" username="123" password="123!" ackMode="MULE_AUTO" doc:name="AMQP Connector"/>
<flow name="testrabbitmqFlow1" doc:name="testrabbitmqFlow1" >
<amqp:inbound-endpoint queueName="amqp.test.queue" exchangeDurable="true" queueDurable="true" responseTimeout="1000000" connector-ref="AMQP_Test" doc:name="AMQP">
<amqp:transaction recoverStrategy="REQUEUE" action="ALWAYS_BEGIN"/>
</amqp:inbound-endpoint>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8085" path="test" method="POST" responseTimeout="1000000" doc:name="HTTP"/>
<logger message="value in queue .. #[payload]....#[message.inboundProperties['http.status']]" level="INFO" doc:name="Logger"/>
</flow>
您能否让我知道我在哪里丢失?
感谢您的回复。我编辑了我的问题并添加了完整的配置。这是我测试简单场景的方式。你可以看看我的编辑并提出建议。 – star
根据我的实际情况,消息不应该被删除,直到我的消费服务提供'200'响应。这里甚至在获得成功响应消息之后仍然存在于队列中。 – star
我选择了使用 的“手动”。它按照您的建议进行所需的场景。但不知道为什么MULE_AUTO不。感谢您的回应。 –
star