2016-02-13 102 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来连接消息代理。所以当你创建连接然后会话时,它会初始化缓冲消息的客户端运行时端。 –