最大JMS队列数量

3
我们有一个应用程序,其包含: 1)一个自定义服务器(传统的ServerSocket),响应于 2)运行在客户端桌面上的Java SWING应用程序/小程序。
我们拥有超过140个这样的自定义服务器(专门为每个SWING客户组而设)。我们构建了一个管理应用程序来管理服务器的启动、关闭和其他操作。为了进行管理应用程序和服务器之间的通信,我们正在构建一个JMS应用程序。由于服务器的负载较重,我们不会将此JMS放置在同一台机器上,因此我们提供了一个单独的JMS选项。我需要为每个服务器提供一个单独的队列。
我的问题是,我们是否可以在单个应用程序服务器上拥有140个或更多的JMS队列。如果可以,请告诉我们硬件的理想配置是什么。如果不行,那你有什么建议呢?
谢谢!
3个回答

3

我一段时间前发现了这篇有趣的文章:(链接)

[ActiveMQ] Broker在节点上打开700个队列后因文件数过多而崩溃--显然每个队列都有一个临时文件,每个JAR文件都有一个打开的文件(共124个!),还有60个杂项文件句柄。当客户端退出时,打开的文件数不会减少。一些搜索表明,ActiveMQ存在许多与泄漏文件句柄相关的错误。


2
您可以使用较少的队列和消息选择器(以拉取每个客户端特定的消息),或者查看此页面,了解如何配置ActiveMQ以处理大量队列...。
另外,如果您正在使用KahaDB 5.3+,则它已经针对使用较少的文件描述符进行了优化等。

1

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接