【发布时间】:2011-11-12 20:53:15
【问题描述】:
我正在尝试将我的大脑包裹在 JMS 上,并且一直在阅读一些非常有用的 sources 和 examples。我现在试图在这里看到“大局”,并将 JMS 背后的所有理论置于使用真正企业技术的实际环境中。
所以这里我们有四个元素:(1) JMS - 用于MOM 的 Java API,(2) ActiveMQ - 众多 JMS 实现之一,( 3) EIP - 我才刚刚开始了解的一种有趣而神秘的野兽,最后,(4) Apache Camel,该野兽的开源实现。
我现在正在尝试将这些组件关联在一起,以查看 JMS(以及通常的企业级消息传递)的实际应用。
我想我要寻找的第一件事是对 EIP 的定义简单明了。它们似乎是 MOM 应该如何表现的一整套设计模式,但由于我一开始对消息传递的概念已经模糊,这只是在对某些已经模糊的理解之上添加的更模糊的定义非常核心的概念。
即使我没有“了解”什么是 EIP,我也确实“了解”了 Camel、Mule 和 ServiceMix 等框架实现它们并允许服务器端组件(“端点”)有效地相互发送消息。
对这个问题最重要的是我对这四个组成部分如何相互关联的理解。我认为理解这一点将帮助我连接大部分点;好吧,无论如何重要的。
所以在上图中,我标记了所有 6 种可能的关系,并在下面引用它们:
- JMS:ActiveMQ - 我理解 ActiveMQ 是 JMS 的实现,就像 Hibernate 是 JPA 的实现一样。这是正确的吗?
- ActiveMQ:Camel - Camel 能够将消息推送到任何 JMS 实现,例如 ActiveMQ。在这种情况下,ActiveMQ 是一个骆驼端点。正确吗?
- EIP:Camel - Camel 是 EIP 的一种实现。首先了解什么是 EIP 对于我理解整个设置也很重要。
- EIP:JMS - 尽管这两者之间可能没有直接联系,但似乎消息传递是 EIP 的核心,而 JMS 是 Java 的消息传递基础。这是一个公平的评估吗?
- 我保留了 EIP:ActiveMQ 和 JMS:Camel 之间的关系,以防这些系统之间存在我应该注意的任何“大概念”。
非常感谢任何有助于为 EIP 定义简单易懂的定义以及了解所有这些组件如何相互关联的帮助。提前致谢!
【问题讨论】:
标签: java architecture jms activemq apache-camel