Architecture JMS体系结构-平衡设计原则与容量

Architecture JMS体系结构-平衡设计原则与容量,architecture,messaging,Architecture,Messaging,我们有一个基于JMS的消息传递应用程序,每天处理大约200万条消息 现在,我们将推出一项附加功能,该功能将影响60%的总消息,即每天120万条消息。 计划是有一个内部队列,我们将在该队列上转发此附加功能的消息 目前考虑的两种设计方案是: a) 将所有消息转发到第二个队列,消息驱动bean(message driven bean,MDB)将在该队列上处理它们–这将使第一个应用程序无法知道是否需要此功能 b) 在原始应用程序中,只过滤掉60%的卷并将它们转发到必要的队列,从而减少内部不必要的流量 因

我们有一个基于JMS的消息传递应用程序,每天处理大约200万条消息

现在,我们将推出一项附加功能,该功能将影响60%的总消息,即每天120万条消息。 计划是有一个内部队列,我们将在该队列上转发此附加功能的消息

目前考虑的两种设计方案是:

a) 将所有消息转发到第二个队列,消息驱动bean(message driven bean,MDB)将在该队列上处理它们–这将使第一个应用程序无法知道是否需要此功能

b) 在原始应用程序中,只过滤掉60%的卷并将它们转发到必要的队列,从而减少内部不必要的流量


因此,从本质上来说,平衡设计与体积——我们应该走哪条路?

选项B。可能会在未来给你一个优势。在两个业务应用程序中保留这样的过滤逻辑很少是一个好主意-考虑一下将来对过滤规则的更改,这将触发两个应用程序的新版本

如果消息不是很小的话,每天120万MSG是一个相当大的数字。您的解决方案A)是最容易构建和处理时间的方案,前提是系统能够处理大量数据。我会做一些负载测试,如果一切正常,请继续b)

许多中间件和消息传递产品提供的逻辑和过滤功能可以应用于中间件,而不是实际应用程序,这取决于您构建的平台形式等

[First Queue] -> Middleware, Copy All -> [Orig Appl. input queue]
                           , Filter   -> [New application input queue]
例如,这可以通过几行XML轻松配置