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 队列的最大数量的主要内容,如果未能解决你的问题,请参考以下文章