JMS 队列的最大数量

Posted

技术标签:

【中文标题】JMS 队列的最大数量【英文标题】:Maximum number of JMS Queues 【发布时间】:2011-11-28 19:03:58 【问题描述】:

我们有一个应用程序 1)一个自定义的服务器(传统的ServerSocket),它响应 2) 在客户端桌面上运行的 Java SWING 应用程序/小程序。

我们有超过 140 台这样的自定义服务器(专用于每组 Swing 客户端)。我们构建了一个管理应用程序来管理服务器启动、关闭和其他内容。对于管理应用程序和服务器之间的通信,我们正在构建一个 JMS 应用程序。 由于服务器的负担很重,我们没有将这个 JMS 放在同一个盒子上,因此我们留下了一个单独的 JMS 盒子的选项。我需要为每个服务器创建一个单独的队列。

我的问题是我们能否在单个应用程序服务器上拥有 140 多个 JMS 队列。如果是,那么理想的硬件配置应该是什么。如果没有,那你有什么建议。

谢谢

【问题讨论】:

【参考方案1】:

您可以使用更少的队列和message selectors(提取特定于每个客户端的消息)或参阅this page,了解如何配置 ActiveMQ 以处理大量队列...

另外,如果您使用的是KahaDB 5.3+,那么它会被优化为使用更少的文件描述符等...

【讨论】:

【参考方案2】:

我只会回答“如果不是”部分。

如果需要,您可以通过使用消息选择器来减少队列计数。一组服务器可以发送到一个队列并由消息属性标识。您肯定必须已经定义了它——一个唯一标识服务器的 IP、URL。

不过,这是最后的解决方案,因为可以更好地监控单独的队列。

【讨论】:

【参考方案3】:

前段时间发现this有趣的文章:

[ActiveMQ] Broker 在节点上打开 700 个队列后失败,因为打开的文件太多 - 显然它为每个队列都有一个临时文件,还有一个打开的文件每个 JAR(其中有 124 个!)和 60 个其他文件句柄。客户端退出时打开文件的数量不会减少。一些谷歌搜索表明 ActiveMQ 中存在许多与文件句柄泄漏有关的错误。

【讨论】:

以上是关于JMS 队列的最大数量的主要内容,如果未能解决你的问题,请参考以下文章

移动云消息队列RabbitMQ对资源创建数量有限制吗?

rabbitmq能控制消息队列发送数量吗

栈和队列----最大值减去最小值小于等于num的子数组的数量

队列最大值减去最小值小于等于num的子数组数量

AFNetworking 2:限制并发下载任务的最大数量

[程序员代码面试指南]栈和队列-最大值减去最小值 小于或等于num 的子数组的数量(双端队列)