9
我需要隊列來執行不重複策略。可能嗎?如果是這樣,怎麼樣? (我一直在谷歌上搜索了幾個小時......)Apache ActiveMQ 5.3 - 如何配置隊列以拒絕重複郵件?
編輯:
的ActiveMQSession實現了這一行:
// transform to our own message format here
ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);
// Set the message id.
if (msg == message) {
msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
} else {
msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
message.setJMSMessageID(msg.getMessageId().toString());
}
的ActiveMQMessageTransformation是可插拔(你可以將其設置),但如果陳述是相當不容置疑的。
任何想法,除了更改他們的代碼?
(對於非特定的類名稱,我很抱歉,這已經過了一段時間) 我想定義測試重複的參數消息ID。但是,儘管您可以執行message.setId,但它正在AMQProxy中被覆蓋(!)並使用新的製造的messageId進行設置。 – Yossale 2010-01-05 12:35:33
messageID由JMS提供程序設置 - 對於ActiveMQ,我們提供全局唯一的ID。使用JMS執行此操作的正確方法是設置消息頭屬性。對於ActiveMQ - 您可以使用使用生成的messageID本身 - 因爲它始終是唯一的。 – 2010-01-07 10:15:35
我正在使用ActiveMQ 5.4.1。如果我設置了自定義的JMSMessageID,它不會按預期工作。 JMSMessageId由ActiveMQ內部構建。我報一個例子,在http://stackoverflow.com/questions/4934386/avoiding-duplicated-messages-on-jms-activemq – apast 2011-02-09 14:53:05