我們如何跟蹤進入Java Message Queue的每條消息?我們需要保存該消息供以後參考。我們已經將它記錄到應用程序日誌(log4j)中,但我們需要稍後查詢它們。我們如何保存Java消息隊列以供參考?
0
A
回答
0
做到這一點的最好方法是使用您的中間件提供商提供的任何跟蹤工具。或者可能的話,您可以設置一箇中間監聽器,其唯一的工作就是記錄消息並轉發到您的現有應用程序。
在大多數情況下,您會發現中間件提供程序已能夠爲您執行此操作,而不會導致應用程序發生任何更改或意識。
2
可以
- 存儲在內存中 - 在收集或在內存數據庫
- 在一個獨立的數據庫
1
您可以創建一個數據庫日誌表中的消息,將消息按原樣存儲在BLOB列中,將其創建/發佈到MQ的時間戳和作爲主鍵的簡單計數器。如果要爲發送的消息創建統計報告,還可以添加字段,如消息類型等。
只需通過使用timestamp列刪除比保留期更早的所有消息即可清理tabe。
1
我在過去實現了這樣的解決方案,我們選擇將具有所有特徵的消息存儲在數據庫中,並在其上開發了一個搜索,重放和取消應用程序。這是Message Store模式:
alt text http://www.eaipatterns.com/img/MessageStore.gif
我們還使用此應用程序Dead Letter Channel。
alt text http://www.eaipatterns.com/img/DeadLetterChannelSolution.gif
如果你不希望建立一個定製的解決方案,看看在ReplayService for JMS從CodeStreet。
0
我會將隊列更改爲主題,然後保留處理消息的原始消費者,並添加另一個消費者以審覈消息到數據庫。
某些JMS提供程序可以滿足主題到隊列橋的定義,然後用戶可以從它們自己的專用隊列中接收信息,並且不必讀取由於其他消費者處於非活動狀態而留在隊列中的過去的消息。
或者,您可以編寫一個log4j appender,它將記錄的消息寫入數據庫。
相關問題
- 1. 如何使用JavaScript禁用IE消息以供參考信息?
- 2. 如何在Mule ESB中保存包含Java消息的隊列?
- 3. 如何保留消息隊列
- 4. 消息隊列:每條消息保證
- 5. java中的消息隊列
- 6. 我們如何分析Activemq的死信隊列中的消息
- 7. 我們可以讓rabbitmq隊列不處理消息
- 8. 如何在隊列中保存jms消息直到它被保存?
- 9. 如何強制文件隊列存儲以將消息保留在磁盤上
- 10. 如何logcat消息保存
- 11. Websphere消息隊列
- 12. 消息從隊列
- 13. Sinatra消息隊列
- 14. Boost消息隊列
- 15. unix消息隊列
- 16. IPC - 消息隊列
- 17. 消息隊列ENOMEM
- 18. 爲Java本地消息隊列api /庫
- 19. Java內部消息隊列/ JMS
- 20. 把消息放到JAVA的隊列中
- 21. Java消息服務隊列會話
- 22. 有關java消息隊列的查詢
- 23. 可以保險絲ESB實現消息代理和消息隊列
- 24. Azure隊列存儲消息大小
- 25. 在消息隊列中存儲變量
- 26. 帶生存時間的消息隊列
- 27. 檢查的消息隊列存在
- 28. 我們如何知道哪個使用者從JMS隊列中獲取消息?
- 29. 爲什麼RabbitMQ不會在持久隊列中保存消息?
- 30. 如何從隊列中刪除消息?
或者使用[Wire Tap](http://www.eaipatterns.com/WireTap.html) – 2010-05-23 12:13:19