JMS如何与服务总线相关联

时间:2011-11-11 20:10:04

标签: java architecture jms activemq apache-camel

我正试图将我的大脑包裹在JMS周围并且已经阅读了一些非常有帮助的sourcesexamples。我现在正试图在这里看到“大局”,并将所有理论置于JMS背后的实际环境中,使用真正的企业技术。

enter image description here

所以这里有四个要素:(1) JMS - MOM的Java API,(2) ActiveMQ - 许多JMS实现之一,(3) EIP - 一个我刚刚开始理解的有趣和神秘的野兽,最后,(4) Apache Camel ,这个野兽的开源实现。< / p>

我现在尝试将这些组件联系在一起,以便查看JMS(以及通常的企业级消息传递)。

我想我正在寻找的第一件事是对EIP的简单而简洁的定义。它们似乎是MOM应该如何表现的一整套设计模式,但由于我已经开始模糊消息传递的概念,这只是一个模糊的定义被添加到对某些已经模糊的理解之上非常棒的概念。

即使我没有“获得”EIP是什么,我也“得到”像Camel,Mule和ServiceMix这样的框架实现它们并允许服务器端组件(“端点”)相互有效地发送消息。

这个问题最重要的是我对这四个组成部分如何相互关联的理解。我认为理解这将有助于我连接大部分点;好吧,无论如何都是重要的。

因此,在上图中,我标记了所有6种可能的关系,并在下面引用它们:

  1. JMS:ActiveMQ - 我理解ActiveMQ是JMS的一个实现,就像Hibernate是JPA的一个实现。这是对的吗?
  2. ActiveMQ:Camel - Camel能够将消息推送到任何JMS实现,例如ActiveMQ。在这种情况下,ActiveMQ是一个骆驼端点。正确的吗?
  3. EIP:Camel - Camel是EIP的实现。首先了解EIP是什么对我理解整个设置也很重要。
  4. EIP:JMS - 尽管这两者之间可能没有直接连接,但似乎消息传递是EIP的核心,而JMS是Java的消息传递基础。这是一个公平的评估吗?
  5. 我留下了EIP:ActiveMQ和JMS:Camel之间的关系,以防我在这些系统之间有任何“重要概念”。
  6. 非常感谢任何有助于将简单易懂的定义放入EIP以及了解所有这些组件如何相互关联的任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:2)

  1. ActiveMQ是MOM的一个实现。它提供了JMS API的客户端实现,供JVM语言使用。 JMS只是一个API,但实现与它们通过有线格式交谈的任何代理相关联,因此您不能使用ActiveMQ JMS实现与WebsphereMQ进行通信。还有其他API可以与其他语言平台的ActiveMQ交流 - 通过CMS的C / C ++,通过NMS的.Net。您还可以通过其他“非类JMS”机制与ActiveMQ交谈,例如通过STOMP协议,该协议具有Ruby,Javascript和其他的客户端库。
  2. 是和否。 Camel使用与EIP相同的“语言”,因此通过使用Camel,您自然会获得EIP。话虽如此,知道它们可以让你知道你在API中寻找什么。我建议使用Camel in Action来深入了解这两者,并在想要获得更多信息时参考EIP网站(http://www.eaipatterns.com/)。
  3. 再次是,不。通过消息传递实现了许多模式(JMS只有一种风格),但是有大量模式具有更广泛的应用程序(例如Splitter,Aggregator)。浏览一下EIP网站索引,了解这一点。
  4. Camel可以使用它的JMS组件与其他系统通信,该组件使用支持该API的任何底层消息传递提供程序(Websphere,Sonic,OpenMQ等)。它还可以讨论其他消息传递技术,例如那些支持AMQP API的技术。
  5. 希望有所帮助。