【问题标题】:ActiveMQ: Is MessageConsumer's selector process on the broker or client side?ActiveMQ:MessageConsumer 的选择器进程是在代理还是客户端?
【发布时间】:2011-08-13 03:03:53
【问题描述】:

有人可以确认我在这方面是对还是错。在我看来,“选择器”操作是在 MessageConsumer 实现中完成的。 (即,所有消息仍从 Message Broker 分派到 MessageConsumer,然后对这些消息执行“选择器”操作)。当我们有一堆我们不感兴趣的消息(即不匹配我们的选择器)时,就会出现问题,由于预取或缓存限制,这些消息最终会填满 MessageConsumer 的内部队列。因此,我们将无法接收任何新消息,尤其是我们对选择器感兴趣的消息。

那么,有没有办法配置 AMQ 在 MessageBroker 端执行选择器操作?我应该开始查看“拦截器”并创建自己的 BrokerPlugin 吗?有关如何解决此问题的任何建议?

我非常感谢任何答案。

谢谢, 顺通A.

【问题讨论】:

    标签: jms activemq producer-consumer messagebroker consumer


    【解决方案1】:

    选择器实际上应用于代理,而不是客户端。如果您的选择器是稀疏的并且目标看到大量流量,则可能是代理没有分页匹配选择器的消息,并且您的消费者在从目标消费更多消息之前不会看到任何匹配项。

    问题在于您的经纪人正在使用的目的地政策。默认情况下,代理只会为浏览器分页 200 条消息,以避免耗尽所有可用内存并避免影响整体性能。您可以通过您自己在activemq.xml 中的DestinationPolicy 增加这个数字,请参阅文档页面here

    【讨论】:

      猜你喜欢
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2012-06-01
      • 2016-01-19
      相关资源
      最近更新 更多