Apache Camel + QPid将messageid设置为UUID不起作用

时间:2015-09-02 12:55:59

标签: java apache-camel amqp qpid

我们有一个使用Apache Camel 2.15.2和Apache Qpid 0.4.0的应用程序,它通过Amqp发送和接收消息到Microsoft Service Bus 1.1。

我们最近从较旧的Qpid 0.32升级了Qpid,现在我们遇到了一个问题,即我们无法将AMQP消息的messageId设置为UUID,这是接收器的要求。设置的messageId是在Qpid中的JmsSession类中创建的字符串。例如,它看起来像:" CLIENT115-61957-114498109876-0:15:1-1"

在此文件中: https://github.com/apache/qpid-jms/blob/master/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java我们可以看到以下内容:

  1. 在第709行,通过调用getNextMessageId(producer)方法创建messageId
  2. 在第923行,我们看到此messageId是使用producer ID和消息序列生成的。
  3. 这永远不会产生格式化为UUID的消息ID。我是否遗漏了某些内容,或者根本无法使用Apache QPID将messageId设置为UUID?

1 个答案:

答案 0 :(得分:1)

客户端不会也不能将UUID设置为MessageID,并且您永远不应该依赖于JMSMessageID值作为特定格式,因为这是特定于供应商的值,不同的JMS客户端库之间可能会有所不同。

如果您的应用程序依赖于分配给它们的特定ID的消息,这些消息可以由您的接收器应用程序进行关联,那么您应该使用消息属性作为它们的用途。