5

我想将 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。

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

将 maxPageSize 从 200 更改为 1000 的副作用是什么?无论如何它会影响经纪人的表现吗?

在此页面上,除了“一次从存储页面到页面的最大持久消息数”之外,我没有看到任何有关此属性的文档:

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

谢谢你的时间!

4

1 回答 1

4

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

但是,在字里行间阅读,您这样做的原因是反模式。作为应用程序的一部分的队列浏览实际上是对消息传递的滥用 - 将消息队列视为队列时效果最好。先进先出。不是您扫描以查看消息是否到达的数组。

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

  1. 根据它们的有效负载将它们分类到一堆其他队列中,然后以不同的方式处理第二级队列,或者
  2. 将有效负载存储到数据库中并根据内容进行选择。
于 2013-05-23T07:50:38.057 回答