AMQP 连接器 Mule ESB 中 MULE_AUTO 和 MANUAL 之间的区别

Difference between MULE_AUTO and MANUAL in AMQP connector Mule ESB

有谁知道在 AMQP 连接器(Mule)的 ACK 模式下 MULE_AUTOMANUAL 之间的确切区别是什么。因为我观察到

在 MULE_AUTO 和 MANUAL 中,如果我们应该从外部删除消息,这两种情况。确切的区别是什么。我错过了什么吗?

<amqp:connector name="AMQP_Test" validateConnections="true"
      host="***"  ackMode="MULE_AUTO"
      username="123" password="123!" />

谁能帮我理解一下。

第二次编辑:

我将 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>

你能告诉我我到底错过了什么吗?

使用 MANUAL,您必须手动确认(或拒绝)消息,如此处所述:https://github.com/mulesoft/mule-transport-amqp/blob/master/GUIDE.md#manual-message-acknowledgement-and-rejection

本质上,这是通过以下方式完成的:

<amqp:acknowledge-message />

和:

<amqp:reject-message requeue="true" />

使用 MULE_AUTO,Mule 应该在流程完成处理后自动确认消息。如果不行,那就是bug了。