hornetq 消费者流量控制
hornetq Consumer Flow Control
我在 http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/flow-control.html
阅读
"消费者流量控制
当客户端使用消息时,它控制服务器和客户端之间的数据流。出于性能原因,客户端通常会在通过 receive() 方法或通过消息侦听器异步传递给消费者之前缓冲消息。如果消费者处理消息的速度不能像消息被传递和存储在内部缓冲区中那样快,那么您最终可能会遇到消息不断累积的情况,如果不能及时处理它们,可能会导致客户端内存不足。 “
但是我不明白...
客户是什么意思?这是否意味着与服务器 jvm 不同的 jvm ?所以 hornetq 服务器会将消息从队列(或主题?)传递到客户端 jvm 堆,以便接收者从内存中使用它们?如果客户端与服务器在同一个 jvm 中怎么办?
如果 MDB 部署在与 HornetQ 代理相同的服务器上,则客户端可以位于不同的 JVM 或相同的 JVM 中。唯一的区别是它将使用的连接类型。如果是不同的 JVM,它将使用 netty 连接器,如果是相同的 JVM,它将使用 inVM 连接器。在这两种情况下,流量控制的行为完全相同。
我在 http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/flow-control.html
阅读"消费者流量控制
当客户端使用消息时,它控制服务器和客户端之间的数据流。出于性能原因,客户端通常会在通过 receive() 方法或通过消息侦听器异步传递给消费者之前缓冲消息。如果消费者处理消息的速度不能像消息被传递和存储在内部缓冲区中那样快,那么您最终可能会遇到消息不断累积的情况,如果不能及时处理它们,可能会导致客户端内存不足。 “
但是我不明白... 客户是什么意思?这是否意味着与服务器 jvm 不同的 jvm ?所以 hornetq 服务器会将消息从队列(或主题?)传递到客户端 jvm 堆,以便接收者从内存中使用它们?如果客户端与服务器在同一个 jvm 中怎么办?
如果 MDB 部署在与 HornetQ 代理相同的服务器上,则客户端可以位于不同的 JVM 或相同的 JVM 中。唯一的区别是它将使用的连接类型。如果是不同的 JVM,它将使用 netty 连接器,如果是相同的 JVM,它将使用 inVM 连接器。在这两种情况下,流量控制的行为完全相同。