2014-09-26 83 views
0

我目前在思考如何最好地解決駱駝和潛在的ActiveMQ的下列問題。獨立駱駝路線,還是ActiveMQ內獨立的路線?

數據需要從一個DB-表在應用程序A在應用B.

1)創建一個單獨的駱駝路線,從DB-表取出數據移動到一個JMS隊列,轉換relavent數據JMS消息並將其發送給JMS隊列中的應用B.

  • 優點:簡單
  • 缺點:應用程序之間的緊密耦合

2)部署一個ActiveMQ實例,並在ActiveMQ實例內創建兩個單獨的駱駝路由。一條路由從數據庫中提取數據,放入AMQ隊列中,第二條路由從AMQ中提取數據並將其推送到JMS隊列。

  • 優點:鬆耦合,擴展性更強
  • 缺點:附加組件,更復雜的架構,以保持

你會選擇以下哪兩種選擇的,爲什麼? 我知道我傾向,但我不會再告訴你:-)

Solution alternatives

回答

2

一般來說,我們使用Apache的駱駝,以減少企業整合的痛苦和複雜性。因此,如果您可以通過10條左右駱駝DSL線路從A到B的路線收集數據 - 爲什麼不呢?

對我來說,我發現備選方案2中存在更多複雜性。您是否有理由使用ActiveMQ?

大多數情況下,當你想要某種有保證的消息傳遞時,你會使用自定義的ActiveMQ--但是由於應用程序B有一個JMS隊列,我懷疑你確實需要ActiveMQ。有很多令人頭疼的事情,維護它,等等。

關於耦合,我不認爲這是一個大問題。您正在A和B之間進行整合,因此必然會有一些耦合。在任何情況下,您的駱駝路線都需要了解應用程序A的jpa/domain對象格式和應用程序B的消息格式。

性能方面,沒有什麼可以阻止您通過駱駝模式爲併發消費者,seda隊列等解決方案1中的性能問題。

結論:除非您有一個特別的和令人信服的理由要使用ActiveMQ,否則我會盡量簡化(Alt 1)。那是你在想什麼? ;)

+0

其實,它不是;-)我正在考慮使用ActiveMQ與替代方案2。我意識到我忘記了關於這個場景的一些重要信息。有很高的可能性(我會說80%),其他應用程序在不久的將來需要來自應用程序A的數據。這就是我爲什麼選擇解決方案2的主要原因。 – Daniel 2014-09-28 15:50:15