AMQP确认m子

扫码查看
本文介绍了AMQP确认m子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 03:46
查看更多