【问题标题】:Stand-alone camel route, or separate routes inside ActiveMQ?独立的骆驼路由,还是 ActiveMQ 内部的独立路由?
【发布时间】:2014-11-21 04:57:57
【问题描述】:

我目前正在考虑如何最好地解决 Camel 以及可能的 ActiveMQ 的以下问题。

数据需要从应用程序 A 中的数据库表移动到应用程序 B 中的 JMS 队列。

1) 创建一个独立的骆驼路由,从数据库表中获取数据,将相关数据转换为 JMS 消息并将其发送到应用程序 B 中的 JMS 队列。

  • 优点:简单
  • 缺点:应用程序之间的紧密耦合

2) 部署一个 ActiveMQ 实例,并在 ActiveMQ 实例内部创建两条独​​立的骆驼路由。一条路由从 DB 获取数据并放入 AMQ 队列,第二条路由从 AMQ 获取数据并将其推送到 JMS 队列。

  • 优点:松散耦合,更具可扩展性
  • 缺点:附加组件,需要维护的架构更复杂

您会选择以下两种选择中的哪一种?为什么? 我知道我倾向于什么,但我不会告诉你:-)

【问题讨论】:

    标签: jms apache-camel integration activemq messaging


    【解决方案1】:

    一般来说,我们使用 apache camel 来减少企业集成的痛苦和复杂性。因此,如果您可以在 10 行左右的骆驼 DSL 中通过从 A 到 B 的路线获取数据 - 为什么不呢?

    在我看来,备选方案 2 的复杂性更高。您认为使用 ActiveMQ 有什么原因吗?

    大多数情况下,当您想要某种有保证的消息传递时,您会使用自定义 ActiveMQ - 但由于应用程序 B 有一个 JMS 队列,我怀疑您是否真的需要 ActiveMQ。在设置、维护等方面有很多令人头疼的事情。

    关于耦合,我不认为这是一个大问题。您正在 A 和 B 之间进行集成,因此必然会有 some 耦合。在任何情况下,您的骆驼路线都需要了解应用程序 A 的 jpa / 域对象格式和应用程序 B 的消息格式。

    在性能方面,没有什么可以阻止您通过并发消费者、seda 队列等的骆驼模式解决备选方案 1 中的性能问题。

    结论:除非您有特定且令人信服的理由想要使用 ActiveMQ,否则我会选择简单(替代项 1)。你是这么想的吗? ;)

    【讨论】:

    • 实际上,它不是 ;-) 我正在考虑使用替代 2,使用 ActiveMQ。我意识到我忘记了有关该场景的一些重要信息。在不久的将来,其他一些应用程序需要来自应用程序 A 的数据的可能性很高(我会说 80%)。这就是我选择解决方案 2 的主要原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多