JMS应用程序中的最大队列数

时间:2011-04-13 02:08:03

标签: java-ee jms ejb java-ee-5

考虑一个具有以下架构的全新应用程序

经销商< - >网络< - >发行人

1)经销商将下订单, 2)网络处理它们以获得基本的理智,然后将它们传递给发行者进行处理, 3)发行人处理他们和 4)将它们发送回网络(进行一些记录) 5)并将其传递给经销商。

我们正在考虑使用队列来实现它。我对JMS的了解目前有限。我想知道我们是否有500多个经销商(比方说)我们可以拥有500多个传入队列(每个经销商收到的消息一个)和相同数量的传出队列(每个传输队列一个,用于从网络到每个经销商的传出消息)。 。

发行人方面也有同样的重复。让我们说有50个发行人(那个50 + 50队列,所以总共有600个队列)

这种架构是否实用,并且支持当前的JEE5应用服务器。如果可以在如上所述的JEE5服务器之类的常规JMS提供程序上实现,那么我们不想引入任何重要的MQ实现,如websphere MQ?

提前thx, Rooban

1 个答案:

答案 0 :(得分:1)

500多个队列?天啊。我找不到任何可以说它不可能的东西,但充其量只是很难维持。

如果经销商在您的网络之外,我想他们会通过HTTP连接到您,因此每个经销商的输入队列将会被淘汰。您将拥有聚集的HTTP侦听器来处理传入的请求。

你可能有机会为每个经销商提供消息驱动的bean池,但即使每个队列1MB / MDB对也意味着你必须拥有0.5-1GB才能获得队列。这是Java EE应用服务器的所有其他要求之上的。

听起来像是配置/管理的噩梦。

为什么你认为你需要队列?它是“保证交付”,可靠性,异步处理等吸引你的吗?

为什么每个经销商都需要自己的队列?每个经销商的处理程序是否不同?

您观察到每个经销商的消息量是多少?你期望什么样的成长?每条消息有多大?消息的有效负载是什么 - XML,JSON还是其他什么?

在我采取这条路线之前,我会确保我已经探索了几种替代品,其中没有一种需要排队。我认为这是可疑的。