2015-09-02 41 views
0

我們使用Apache的駱駝2.15.2和Apache Qpid 0.4.0發送和超過AMQP接收消息的微軟服務總線1.1的應用程序。Apache的駱駝+ QPid集MESSAGEID到UUID不工作

我們最近從較早的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行創建MESSAGEID通過調用方法getNextMessageId(生產者)
  2. 在923行,我們看到這個MESSAGEID通過使用生產者ID和一個消息序列生成的。

這不可能產生格式化爲UUID消息ID。我是否錯過了某些東西,或者是不可能使用Apache QPID將messageId設置爲UUID?

回答

1

客戶端沒有也無法將UUID設置爲MessageID,因此您不應該依賴於作爲特定格式的JMSMessageID值,因爲這是特定於供應商的值,它可能會在不同的JMS客戶端庫中有所不同。

如果你的應用程序依賴於具有分配給他們的特定ID,可以通過你的接收機的應用程序,那麼你應該使用消息屬性這個因爲這是他們在那裏什麼被相關的消息。

+0

謝謝您的回覆!我們的問題是,我們發佈了一個消息規範,所有供應商都必須遵守,並且該規範指出messageId應該採用UUID格式。在這個階段,我認爲可能很難改變使我們陷入棘手情況的規格。 – P3anuts

+0

我很確定JMS客戶端的所有實現者都不會同意修改他們的客戶端實現來滿足您的業務規範。 –

+0

我意識到這一點,但無論如何我都爲此打開了一個問題。由於這在以前的版本中起作用,我認爲如果它現在可以工作,它也會很好。瞭解這個問題是如何處理的將會很有趣。 https://issues.apache.org/jira/browse/QPIDJMS-105 – P3anuts