0
我們使用JBOSS 5.1.0,我們使用主題來存儲我們的消息。我們的客戶正在持續訂閱以獲取這些消息。Jboss消息。每次發送一條消息
一切工作正常,但一個問題是我們從TCP客戶端獲取數據,我們正在處理並保留主題,每秒發送大約10條消息,而我們的客戶端每次讀取一條消息。這之間有一個巨大的差距,並且在某段時間之後JBOSS主題有很多消息,並且崩潰說出內存不足。 有沒有解決這個問題的方法。
我們使用JBOSS 5.1.0,我們使用主題來存儲我們的消息。我們的客戶正在持續訂閱以獲取這些消息。Jboss消息。每次發送一條消息
一切工作正常,但一個問題是我們從TCP客戶端獲取數據,我們正在處理並保留主題,每秒發送大約10條消息,而我們的客戶端每次讀取一條消息。這之間有一個巨大的差距,並且在某段時間之後JBOSS主題有很多消息,並且崩潰說出內存不足。 有沒有解決這個問題的方法。
基本上,生產者生產的消息比消費者能處理的多10倍。如果這種情況穩定(不僅在高峯期),這將永遠不會工作。
如果您限制製作者每秒只發送一條消息(當然可能,例如查看RateLimiter
),您將如何處理製作者端的額外消息?如果他們沒有在主題中排隊,他們會排隊等待制片人。
您有幾種選擇:
莫名其妙地調整你的消費者更快地處理信息,所以話題永遠充滿
調整使用持久性存儲的話題。這好多了。不僅主題不會將所有內容都存儲在內存中,而且您還可能獲得事務性行爲(消息是持久的)
將您想要設置爲主題的消息隊列和每秒處理一條消息。該隊列必須是持久的,並且必須能夠保持更多的消息比目前的主題可以
嗨,反正是有消費者會同時讀取所有的郵件,而每讀一次一個消息。 – Ravz1234
@Ravi:消費者可以通過多個線程一次處理多條消息。您也可以使用名爲[aggregator](http://www.eaipatterns.com/Aggregator.html)的中間組件來動態組合消息。 –