ActiveMQ和maxPageSize

时间:2013-05-21 20:14:02

标签: activemq

我想将maxPageSize设置为默认值200的更大数字。

这是我在activemq.xml文件中设置的方式:

<destinationPolicy>
            <policyMap>
              <policyEntries>
              ---
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" maxPageSize="SOME_LARGE_NUMBER">
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>

此更改可帮助我使用QueueBrowser.getEnumeration()获取队列中的消息数,因为它返回200,即使队列中的消息数大于200。

请参阅:http://docs.oracle.com/javaee/1.4/api/javax/jms/QueueBrowser.html了解QueueBrowser.getEnumeration()。

将maxPageSize从200更改为1000会产生什么副作用? 它是否会影响经纪人的表现呢?

除了“一次从商店分页的最大持久性消息数”之外,我没有看到此属性的任何文档:

http://activemq.apache.org/per-destination-policies.html

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

最大页面大小只是表示将加载到内存中的消息数量,因此影响是......它将消耗更多内存。

虽然在这些行之间进行读取,但这样做的原因是反模式。队列浏览作为应用程序的一部分实际上是对消息传递的误用 - 消息队列在被视为队列时效果最佳。先进先出。不是您扫描的数组,以查看邮件是否已到达。

最好不要使用每条消息,并且:

  1. 根据其有效负载将它们排序到一堆其他队列中,然后以不同方式处理第二级队列,或者
  2. 将有效负载存储到数据库中并根据内容进行选择。