JMS消息监听器设计

时间:2011-05-13 13:17:45

标签: java jms

什么是更好的设计

对于两种类型的消息,在此侦听器中使用一个侦听器和单独处理是否更好。

或者有两个用于处理的侦听器并通过标题分隔它?

e.g。对于不同类型的课程。或接口。

- - - - 编辑

而不是使用选择器。我可以让我们说Handler(接口)列表,然后迭代注册(通过IOC)处理程序并选择可以处理消息的处理程序。它也是分开的,但不同的是,您认为哪种更好?

2 个答案:

答案 0 :(得分:2)

使用多个侦听器。

为什么要编写与您已使用的技术的现有功能重复的代码。我在这里使用单词duplication只是最简单的意义,因为JMS可以在消息路由中支持相当复杂的决策过程。

其他考虑因素是能够根据每个侦听器的选择器分配工作负载。使用多个侦听器,您可以按消息类型配置线程数,并根据需要轻松更改该值。当然你也可以自己做,但你为什么要这样做?

答案 1 :(得分:1)

我更喜欢面向对象的方法,每个消息都有一个单独的监听器。这样我就可以通过添加新的类类来添加新消息,而不必使用更多“if / else”代码修改现有的侦听器。

这是开放/封闭原则的一个例子,Bob Martin's SOLID recommendations之一。