【问题标题】:hornetq Consumer Flow Controlhornetq 消费流控制
【发布时间】:2016-05-24 15:14:01
【问题描述】:

我在http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/flow-control.html阅读

“消费流控制”

这在客户端使用消息时控制服务器和客户端之间的数据流。出于性能原因,客户端通常在通过 receive() 方法或通过消息侦听器异步传递给消费者之前缓冲消息。如果消费者无法像在内部缓冲区中传递和存储消息一样快地处理消息,那么您最终可能会遇到这样一种情况,即如果无法及时处理消息,消息将不断堆积,可能导致客户端内存不足。 "

但我不明白... 客户是什么意思?这是否意味着与服务器 jvm 不同的 jvm?所以 hornetq 服务器会将消息从队列(或主题?)传递到客户端 jvm 堆,以便接收器从内存中使用它们?如果客户端和服务器在同一个 jvm 中怎么办?

【问题讨论】:

    标签: jms hornetq


    【解决方案1】:

    如果 MDB 与 HornetQ 代理部署在同一台服务器上,则客户端可以位于不同的 JVM 中或相同的 JVM 中。唯一的区别是它将使用的连接类型。如果是不同的 JVM,它将使用 netty 连接器,如果是相同的 JVM,它将使用 inVM 连接器。在这两种情况下,流控制的行为完全相同。

    【讨论】:

    • 谢谢,但我还是不明白。客户端是我自己的独立应用程序(实现 jms 接收器)。那么我的客户端如何缓冲消息?机制是什么以及如何在我自己的代码上实现这一点??
    • 是的,但除非您完全重新实现了 HornetQ 客户端,否则您将使用 hornetq jars 连接到消息代理。因此,当您创建连接然后会话时,它会初始化缓冲消息的客户端运行时端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2013-12-12
    • 2011-10-24
    • 2013-11-28
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多