2016-02-13 98 views
0

我在http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/flow-control.htmlHornetQ的消費者流量控制

「消費者流量控制

該控制服務器和客戶端之間的數據流量進行客戶端使用消息。出於性能方面的客戶提供之前通常緩衝消息通過receive()方法傳遞給消費者,或者通過消息監聽器異步傳遞給消費者。如果消費者無法像傳遞並存儲在內部緩衝區中那樣快速處理消息,那麼最終可能會導致消息不斷累積如果無法及時處理,可能會導致客戶端內存不足。「

但我不明白... 客戶端的含義是什麼?它是否意味着與服務器jvm不同的jvm?所以hornetq服務器會將隊列中的消息(或主題?)傳遞給客戶端jvm堆,以便接收者從內存中消耗它們?如果客戶端與服務器處於同一個jvm中,該怎麼辦?

回答

1

在與HornetQ代理部署在同一臺服務器上的情況下,客戶端可以位於不同的JVM或相同的JVM中。唯一的區別將是它將使用的連接類型。在不同的JVM的情況下,它將使用netty連接器,並且如果使用相同的JVM,它將使用inVM連接器。在這兩種情況下,流量控制的行爲都完全相同。

+0

謝謝,但我還是不明白。客戶端是我自己的獨立應用程序(實現jms reciver)。那麼我的客戶端如何緩衝消息呢?什麼是機制,以及這是如何可能在我自己的代碼? – user5157427

+0

是的,但除非您完全重裝了HornetQ客戶端,否則您將使用hornetq jar來連接消息代理。所以當你創建連接然後會話時,它會初始化緩衝消息的客戶端運行時端。 –