ActiveMQ 和 maxPageSize

标签 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

谢谢你的时间!

最佳答案

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

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

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

  • 根据它们的有效负载将它们分类到一堆其他队列中,然后以不同的方式处理第二级队列,或者
  • 将有效负载存储到数据库中并根据内容进行选择。
  • 关于ActiveMQ 和 maxPageSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678685/

    相关文章:

    java - 如何让 JMS 生产者使用 TemporaryQueue 监听消费者返回的响应?

    java - 找不到 java.lang.AutoCloseable 的类文件 - ActiveMQ 代码

    java - 在 ActiveMQ 中存储和处理消息

    activemq - Active MQ 给出 OutOfMemory 错误

    java - CentOS上安装ActiveMQ打不开admin等网页

    ssl - 如何在服务组合中使用嵌入式 Active MQ Broker 为 Camel Route 设置 SSL?

    java - 您会使用发布/订阅或队列来进行长时间运行的后台进程吗?

    java - 为什么使用 jmstemplate 时报告的 activemq 队列数量发生变化?

    javax.jms.InvalidDestinationException : Cannot use a Temporary destination from another Connection

    java - ActiveMQ 传输 : tcp: Thread RUNNABLE state - too many threads hanging