質問

バックグラウンド

メッセージキューを介して互いに通信する必要がある2つのサービスがあります。 1つはPHPで書かれたレガシーサービスで、もう1つはJavaにあります。遅くまで、PHPサービスはJavaで書き直されます。彼らが互いに通信する現在の方法は、他のサービス投票である共有データベースに書き込むことです。これは、私が逃げようとしていて、メッセージキューに置き換えようとしているものです。

問題

私が現在取り組んでいるコミュニケーションは、PHPサービスからJavaサービスまでです。比較的複雑なオブジェクト(文字列と整数とリストとマップのマップとマップを送信する必要があります。理想的には、ソリューションはPHPで実行可能であり、Javaでは理想的です。これはこのプロジェクトの遺産になるからです。

可能な解決策

    1.
役に立ちましたか?

解決

私が思いついたソリューションは、PHP/Stompからのメッセージを jms-json-object 変身。メッセージは特別に作成されたJSONです。 readObject, 、それらを使用して完全なオブジェクトに再構築することができます XStream. 。この再構築は内部に起こります activemq そして、私はただ必要であることを確認する必要があります エイリアスコンバーター 配置されています。 PHPコンポーネントを最終的にJavaに置き換えると、メッセージを送信するだけで使用するだけの問題になります writeObject.

他のヒント

PHPのストンプクライアントがあります、

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

私の見解では、特定の実装からコンポーネントの相互作用を自由に保つ必要があります。 ActiveMQはバギーであり、多くのシステムがrabbitmqまたはSun openmqを支持して削除しました。 「メッセージを送信する」ルーチンをPHPでコーディングしないようにし、代わりに「sendmessage」サーブレットを作成し、curlを使用してJSONエンコードメッセージを投稿する必要があります。サーブレットは接続ファクトリーなどを使用します。少しオーバーヘッドで、MQサーバー固有のコードからPHPコンポーネントを無料で無料にします。 Json'ed LoadでTextMessageを使用して、ジャクソンで簡単にデコードしてデコードすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top