1

我目前正在调查队列或主题的实现,基于我们项目中的 activeMQ。设置非常简单,我们使用 maven 模块根据业务领域分离业务逻辑。一个通用模块允许我们组装通用逻辑。

简化示例:

  • 通用模块
  • 产品模块
  • 客户模块

要求之一是某些操作与后端异步(通过activeMQ),后端又以结果消息进行响应。第二个要求是应该可以通过创建一个新的可部署工件来水平扩展应用程序,该工件只包含需要更多汁液的模块。

我们使用的是 Spring 4,当然还有 jms 和 activeMQ。

关于我的问题。我们希望只使用一个队列或主题来进行后端连接。这意味着我们的通用模块将处理 jms 配置(jms 工厂、jms 配置),并且不同类型的消息将通过该队列/主题发送。如何确保产品相关消息由“产品”模块处理,而与客户相关的消息由“客户”模块处理?如果模块被部署两次,我如何确保只有一个“产品”模块逻辑可以处理消息?您会推荐什么方法,或者这个队列/主题是“坚果”?

由于 publ/subsc 模式,我自己正在考虑使用主题的方向...,或者可能队列侦听器充当观察者模式中的发布者,产品或客户端订阅者可能订阅以接管处理消息?

谢谢你的帮助。

4

1 回答 1

2

如果您只想要一个“产品”模块来处理一条消息,为什么要使用主题?使用主题,您将收到一条消息 - 多个订阅者各自收到消息。Queue 确保只有一个消费者收到一条消息(点对点),使用 Topic,您可以将一条消息发送给所有订阅者。

关于消息的“过滤”,这应该是提供商特定的。查看 ActiveMQ 文档,我看到了这个。所以,基本上每个消费者都应该得到消息代理,基于选择器,将发送。我不知道具体情况,但这将是我开始这项调查的第一个地方。同样的想法,看看这个来自 Spring 论坛的讨论。它确实与 Spring Integration 有关,但它与消息选择的想法相同。另一方面,您可以考虑在您的项目中采用 Spring Integration:它是一种集成模式的抽象,并且非常适合所有面向消息的事物。

该论坛帖子中很少有有趣的想法:

于 2014-08-22T06:11:30.393 回答