2012-08-27 117 views
0

我們使用JBOSS 5.1.0,我們使用主題來存儲我們的消息。我們的客戶正在持續訂閱以獲取這些消息。Jboss消息。每次發送一條消息

一切工作正常,但一個問題是我們從TCP客戶端獲取數據,我們正在處理並保留主題,每秒發送大約10條消息,而我們的客戶端每次讀取一條消息。這之間有一個巨大的差距,並且在某段時間之後JBOSS主題有很多消息,並且崩潰說出內存不足。 有沒有解決這個問題的方法。

回答

0

基本上,生產者生產的消息比消費者能處理的多10倍。如果這種情況穩定(不僅在高峯期),這將永遠不會工作。

如果您限制製作者每秒只發送一條消息(當然可能,例如查看RateLimiter),您將如何處理製作者端的額外消息?如果他們沒有在主題中排隊,他們會排隊等待制片人。

您有幾種選擇:

  • 莫名其妙地調整你的消費者更快地處理信息,所以話題永遠充滿

  • 調整使用持久性存儲的話題。這好多了。不僅主題不會將所有內容都存儲在內存中,而且您還可能獲得事務性行爲(消息是持久的)

  • 將您想要設置爲主題的消息隊列和每秒處理一條消息。該隊列必須是持久的,並且必須能夠保持更多的消息比目前的主題可以

+0

嗨,反正是有消費者會同時讀取所有的郵件,而每讀一次一個消息。 – Ravz1234

+0

@Ravi:消費者可以通過多個線程一次處理多條消息。您也可以使用名爲[aggregator](http://www.eaipatterns.com/Aggregator.html)的中間組件來動態組合消息。 –