我们有一个使用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我们可以看到以下内容:
这永远不会产生格式化为UUID的消息ID。我是否遗漏了某些内容,或者根本无法使用Apache QPID将messageId设置为UUID?
答案 0 :(得分:1)
客户端不会也不能将UUID设置为MessageID,并且您永远不应该依赖于JMSMessageID值作为特定格式,因为这是特定于供应商的值,不同的JMS客户端库之间可能会有所不同。
如果您的应用程序依赖于分配给它们的特定ID的消息,这些消息可以由您的接收器应用程序进行关联,那么您应该使用消息属性作为它们的用途。