2011-08-12 70 views
3

我在我的應用程序中使用Jboss MQ。JMS消息重新傳遞到隊列

我正在嘗試處理向JMS隊列重傳的消息。 有沒有一種方法可以在消費者收到的原始消息中設置一些值(第一次收到消息) 因此,無論何時消息被重新發送,我都可以讀取值並作出一些決定。

請讓我知道如果問題不清楚,我可以嘗試詳細解釋。

+1

一個例子會幫助:) –

回答

6

不,JMS不能這樣工作。

您可以作爲消費者(接收),生產者(發送)或瀏覽器(窺視)與隊列交互。沒有操作來放回已更改的消息。如果消費者在回滾的事務中工作,那麼消息將顯示爲「放回」,但這只是因爲它正在隊列中等待事務的提交。

理論上,您可以爲獲得該消息的同一隊列創建一個生產者,對其進行修改並將其發送給「您自己」(消息驅動bean?),但這會是不同的消息,只有相似的內容。它會到隊列的盡頭。當然不建議這樣做。

最好將消息數據(至少是你感興趣的部分)保存在數據庫中,以便檢測它是新的還是重新發送的。

1

企業集成模式Content Enricher(1)(2)可能對您有所幫助。