问题描述
我在Mule ESB中的AMQP连接器有问题.当我在流程中发送请求-响应消息时,由AMQP入站端点发起.确认消息后,我收到关于入站属性"delivery-key"缺失的错误.
I'm having issues with the AMQP Connector in Mule ESB. When I send an request-response message inside my flow, initiated by an AMQP Inbound Endpoint. When I acknowledge the message I get an error about the inbound property 'delivery-key' missing.
我尝试设置和出站属性,并将其通过VM端点发送到另一个已成为和入站属性的流.但是,这没有用.
I've tried setting and outbound property and sending that through a VM endpoint to another flow where it became and inbound property. However this didn't work.
我正在使用RabbitMQ.
I am using RabbitMQ.
推荐答案
AMQP消息确认既需要通道又需要传递密钥.由于通道不可序列化,因此将其存储在流变量(调用作用域的消息属性)中,以防止在消息处理的某个时刻(例如,使用持久化VM队列时)发生序列化问题.
AMQP message acknowledgement requires both a channel and a delivery key. Because channel is not serializable, it is stored in a flow variable (invocation-scoped message property) to prevent problems with serialization needs to occur at some point of the message processing (for example when using persisted VM queues).
对于所使用的连接器版本,传递密钥仅存储在入站邮件属性中.如在此票证中所述,当您输入时,将清除入站邮件属性在流中使用出站端点(就像对https:outbound-endpoint
一样).
With the version of the connector you are using, the delivery key is only stored in an inbound message properties. As explained in this ticket, inbound message properties are wiped-out when you use an outbound-endpoint amid flow (as you do with your https:outbound-endpoint
).
您有两个选择:
- 构建AMQP传输的 mule-3.3.x分支获取补救措施(交付密钥存储在流变量中),
- 使用
message-enricher
包装SOAP调用,以将其与主流隔离,这样它就不会对入站属性造成严重破坏,
- Build the mule-3.3.x branch of the AMQP transport to get the remediation (delivery key stored in a flow variable),
- Use a
message-enricher
to wrap your SOAP call in order to isolate it from the main flow so it won't wreak havoc in the inbound properties,
这篇关于AMQP确认m子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!