独立的驼峰路线,还是ActiveMQ内部的独立路线?

时间:2014-09-26 08:25:15

标签: jms apache-camel integration activemq messaging

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

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

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

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

2)部署ActiveMQ实例,并在ActiveMQ实例中创建两个单独的camel路由。一个路由从DB获取数据并且puts在AMQ队列中,第二个路由从AMQ获取数据并将其推送到JMS队列。

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

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

Solution alternatives

1 个答案:

答案 0 :(得分:2)

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

对我来说,我发现备选方案2更加复杂。您是否有理由使用ActiveMQ?

大多数情况下,当您需要某种有保证的消息传递时,您将使用自定义ActiveMQ - 但由于应用程序B具有JMS队列,我怀疑您确实需要ActiveMQ。在设置,维护它等等时会遇到很多麻烦。

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

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

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