簡體   English   中英

使用ActiveMQ / Stomp在PHP和Java之間進行通信

[英]Communicating between PHP and Java using ActiveMQ/Stomp

背景

我有兩個服務需要通過消息隊列相互通信。 一個是用PHP編寫的遺留服務,另一個是Java。 不久之后,PHP服務將用Java重寫。 他們彼此通信的當前方式是寫入共享數據庫,其他服務輪詢。 這就是我試圖擺脫並替換為消息隊列。

問題

我現在正在進行的通信是從PHP服務到Java服務。 它需要發送一個相對復雜的對象(字符串和整數以及字符串和整數的列表和映射)。 理想情況下,該解決方案在PHP中是可行的,在Java中是理想的,因為這將成為該項目的遺產。

可能的解決方案

    1。

我提出的解決方案是使用jms-json-object轉換從PHP / Stomp中排隊消息。 消息是特制的JSON,這樣當它們使用readObject在Java中出列時,可以使用XStream將它們重建為完整對象。 這種重建發生在ActiveMQ的內部,我只需要確保必要的別名轉換器就位。 當我們最終用Java替換PHP組件時,發送消息只是使用writeObject

有一個用於PHP的STOMP客戶端,

http://pecl.php.net/package/stomp

在我看來,你應該保持組件交互不受特定實現的影響。 ActiveMQ是錯誤的,許多系統將其刪除,轉而使用RabbitMQ或Sun OpenMQ。 您必須避免在PHP中編寫“發送消息”例程,而是創建“SendMessage”servlet,並使用curl發布JSON編碼的消息。 然后servlet將使用連接工廠等。只需一點開銷,您就可以從任何mq-server特定代碼中釋放PHP組件。 您可以使用帶有JSON加載的TextMessage,使用Jackson輕松編碼和解碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM