1

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

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

我真的很感激任何答案。

谢谢,Soonthorn A.

4

1 回答 1

1

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

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

于 2011-04-27T11:35:48.647 回答