2015-09-15 72 views
0

應用程序具有負責提供審覈日誌的JMS隊列。應用程序將日誌發送到JMS隊列,並且該隊列由MDB使用。JMS花費太多時間來處理消息

但是,發送的消息是大的XML文件,從20 MB到100 MB不等。問題在於JMS隊列消耗的消息太長,導致出現OutOfMemory錯誤。

我該怎麼做才能解決這個問題?

+0

您的應用程序正在使用哪個EJB容器?每秒生產者(來源)事務(消息)是什麼?什麼是消費者(這裏是您的MDB)每秒交易量? – developer

+0

@ VA31容器是JBoss EAP 6(HornetQ)。關於每秒吞吐量,我不確定,我得運行性能測試來給你這些信息。 – jguilhermemv

+0

您是否想過增加MDB實例的數量,以便應用程序能夠處理更多消息? – developer

回答

0

這個答案可能可能不會幫助jguilhermemv,只是想分享一個想法,可以閱讀這篇文章的人,一個解決大消息的工作。 第一件事情就是儘量不要發送到大的消息,現在我們有兩個選擇(但這些都需要實現的更改,並可以在啓動情況下或系統的實施都允許,後期):

  1. 嘗試將日誌保存在數據庫中,並只發送JMS消息中的日誌標識。 (在DB 保存日誌不推薦,因爲大小和時間,以節省將再次在以後的階段出現問題。

  2. 保存日誌的文件的形式(它們保存在一個公共位置)和文件名在DB中並通過JMS共享這些文件名ID。消費者可以在消費之後再讀取該日誌文件。