2011-09-30 73 views
3

我们的应用程序有 1)定制服务器(传统ServerSocket),它响应 2)在客户端桌面上运行的Java SWING应用程序/小程序。JMS队列的最大数量

我们有超过140个这样的自定义服务器(专用于每组挥杆客户端)。我们已经构建了一个管理应用程序来管理服务器启动,关闭和其他事情。对于Admin应用程序和服务器之间的通信,我们正在构建一个JMS应用程序。 由于服务器的负担很重,我们并没有将这个JMS放在同一个盒子上,因此我们只剩下一个选项来使用单独的JMS盒子。我需要为每个服务器分配一个队列。

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

感谢

回答

3

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

[ActiveMQ的]经纪人一个节点上打开700个队列由于打开的文件太多失败后 - 显然它每个队列都有一个临时文件,每个JAR(其中有124个!)的打开文件以及60个其他文件句柄。当客户端退出时,打开的文件数量不会减少。一些谷歌搜索意味着ActiveMQ中存在许多与泄漏文件句柄相关的错误。

1

我会回答“if not”部分。

如果需要,可以通过使用消息选择器来减少队列数。一组服务器可以发送到一个队列并通过消息属性进行标识。您当然必须将其定义为IP,即唯一标识服务器的URL。

尽管这是最后的解决方案,因为可以更好地监视单独的队列。

2

您可以使用更少的队列和message selectors(拉具体到每个客户端的消息)或查看有关如何配置的ActiveMQ处理大量队列的​​...

还,如果您正在使用KahaDB 5.3 +,然后优化为使用更少的文件描述符,等等......