2011-02-17 178 views
4

發送消息,ActiveMQ的我想要實現通過互聯網通訊。但還沒有IP Public。 所以我想問一個關於使用JMS通過互聯網發送消息給ActiveMQ的人嗎?通過互聯網

能不能做到?

回答

3

是的,它暴露了(在端口61616默認)正常的基於TCP端點。但是,這不會是推薦的部署模型 - 更好的模型是使用servlet容器公開基於http的端點,該容器將消息內部交給activemq代理。

有很多好的解決方案,可以做到這一點 -

  1. Spring IntegrationApache Camel
  2. 曝光用說Apache CXF(這將帶給你一個基於標準的接口),一個web服務端點,它會在內部交接該消息給ActiveMQ。
+0

你能給我一些關於使用TCP的弱點的解釋嗎?謝謝 – 2011-02-21 04:53:38

2

是的,這是可以做到。目前我們正在運行一千多個「消費者」,通過互聯網連接到我們的經紀商。

至於流量在互聯網上不安全,我不完全一致:

暴露一個Web服務是一樣riskfull作爲露出經紀人。最終,您從未100%確信自己的代碼或代碼或底層應用程序(Apache CXF,Web服務器,應用程序服務器,數據庫服務器,消息代理)包含可能存在安全風險的缺陷。二至,HTTP是一樣ActiveMQ是儘可能多的TCP流量(踐踏或openwire協議)

話雖這麼說,你可以採取一切措施,使風險儘可能小。

我們做了以下內容:

  • 用戶&密碼才能連接到代理(ActiveMQ的suports廣泛驗證的解決方案,如果需要,你可以滾你自己)

  • 開關端口爲不同的號碼,以便檢測是比較困難的

  • ,如果你有超過消費者藏漢控制,防火牆應用IP過濾器的可連接到哪個IP經紀人(不幸的是,這是不是在我們的情況可能)

  • 加密郵件

  • 我們已經增加了藏漢使用令牌的應用級認證。這樣一來,每個消息都在我們自己的應用程序認證

- >如果所有的這些都實現,我認爲你是非常安全的,並作爲獎勵,你不需要web服務的額外層(如果這應用程序需要擴展,您需要與您的代理商平等擴展您的web服務。

1

簡單連接(openwire)應該沒問題。堅持標準設置要比試圖設置web服務更簡單。只要確保使用SSL加密頻道。如果你使用簡單的密碼,他們可能會被公共網絡接收(不過不管怎樣) - 這就是爲什麼我更喜歡SSL。實際上,ActiveMQ是通過互聯網進行通信的一種非常好的方式,因爲它支持事務和持久性,使其能夠很好地處理網絡穩定性問題。

但是,您需要在運行ActiveMQ服務器的計算機上運行公共IP(或某些NAT /端口轉發解決方案,形成一個公共IP)。