我目前正在考虑如何最好地解决Camel的以下问题,以及可能的ActiveMQ。
需要将数据从应用程序A中的数据库表移动到应用程序B中的JMS队列。
1)创建一个独立的camel路由,从数据库表中获取数据,将相关数据转换为JMS消息,并将其发送到应用程序B中的JMS队列。
2)部署ActiveMQ实例,并在ActiveMQ实例中创建两个单独的camel路由。一个路由从DB获取数据并且puts在AMQ队列中,第二个路由从AMQ获取数据并将其推送到JMS队列。
您会选择以下两种选择中的哪一种?为什么? 我知道我倾向于什么,但我不会告诉你: - )
答案 0 :(得分:2)
通常,我们使用apache camel来减少企业集成的痛苦和复杂性。因此,如果您可以通过10个左右的骆驼DSL线路从A到B的路径获取数据 - 为什么不呢?
对我来说,我发现备选方案2更加复杂。您是否有理由使用ActiveMQ?
大多数情况下,当您需要某种有保证的消息传递时,您将使用自定义ActiveMQ - 但由于应用程序B具有JMS队列,我怀疑您确实需要ActiveMQ。在设置,维护它等等时会遇到很多麻烦。
关于耦合,我不认为这是一个大问题。您正在A和B之间进行集成,因此必然会有某些耦合。无论如何,您的骆驼路线需要了解应用A中的jpa /域对象格式和应用B的消息格式。
性能方面,没有什么可以阻止您通过用于并发消费者,seda队列等的驼峰模式来解决备选方案1中的性能问题。
结论:除非您有特定且令人信服的理由想要使用ActiveMQ,否则我会选择简单(Alt 1)。那是你在想什么? ;)