【问题标题】:Pattern for handeling multiple message types with spring JMS in a multi module maven setup在多模块 Maven 设置中使用 Spring JMS 处理多种消息类型的模式
【发布时间】:2014-10-15 14:33:01
【问题描述】:

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

简化示例:

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

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

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

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

由于 publ/subsc 模式,我自己正在考虑使用主题的方向...留言?

感谢您的帮助。

【问题讨论】:

    标签: spring module jms activemq jms-topic


    【解决方案1】:

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

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

    该论坛帖子中的一些有趣的想法:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多