【问题标题】:JMS between Enterprise applications企业应用程序之间的 JMS
【发布时间】:2011-05-02 12:23:53
【问题描述】:

我们有一个项目,我们希望使用 JMS 将 2 个企业系统链接在一起。 简而言之,系统 1 向队列发送消息。 Systems2 接收该消息,在后台执行大约 30 分钟的全部处理负载,然后将消息发送回队列以供 System1 接收。

我们可以使用 1 个队列还是需要 2 个队列? 如果我们有 2 个队列,则 System1 写入 queue1,System2 接听。 当 system2 准备就绪时,它会写入 queue2,然后 System1 将其接收。

哪种方法最好? 如果有人知道这些方法的任何限制或任何更好的解决方案,请分享

谢谢 达米安

【问题讨论】:

    标签: jms system message-queue messaging


    【解决方案1】:

    如果这是一个专用的点对点接口,并且这些应用程序都不像服务器,那么您可以使用单个队列。但是,此模型不支持客户端-服务器模式。另一方面,客户端-服务器模式支持点对点接口以及客户端-服务器接口,实现起来并不难,为什么不使用它呢?

    具体来说,服务器侦听已知队列。任何想要驱动该服务的应用程序都会向众所周知的队列发送消息。该消息包含回复目的地的地址,服务器将回复发送到该目的地。通过这种方式,服务器应用程序可以处理来自网络上任何位置的许多相对匿名(或根据需要进行身份验证)客户端的请求。

    此方法还支持不在同一消息引擎上的客户端和服务器队列。它支持以 FIFO 模式访问队列,这应该会更高性能。它比单个队列更好地处理快速生产者、慢消费者的经典异步消息传递案例。它支持动态回复目的地。它允许应用程序相互独立地重新定位。如果你所拥有的是真正的点对点,没有客户端-服务器模式的元素,那么这个架构也支持它。

    【讨论】:

      【解决方案2】:

      您可以在队列上使用选择器,但我建议您保持简单,并按照您的描述使用 2 个队列。我更喜欢将消息类型划分到单独的队列中,我认为您会发现这也是最容易管理的。

      队列在很大程度上只是一桶消息的逻辑名称,与单个队列中的所有消息相比,几乎没有额外的开销。

      【讨论】:

      • 是的,只是快速浏览了选择器,但我完全同意保持简单。我认为我们不需要使用选择器使这个项目过于复杂
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 2018-01-28
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      相关资源
      最近更新 更多