3

バックグラウンド

メッセージ キューを介して相互に通信する必要がある 2 つのサービスがあります。1 つは PHP で記述された従来のサービスであり、もう 1 つは Java で記述されています。遅かれ早かれ、PHP サービスは Java で書き直されます。それらが互いに通信する現在の方法は、他のサービスがポーリングする共有データベースに書き込むことです。これは私が回避しようとしているものであり、メッセージ キューに置き換えようとしています。

問題

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

可能な解決策

    1.
4

3 に答える 3

3

私が思いついた解決策は、jms-json-object変換を使用してPHP/Stompからメッセージをキューに入れることです。メッセージは特別に細工されたJSONであるため、を使用してJavaでデキューされたときに、XStreamreadObjectを使用して完全なオブジェクトに再構築できます。この再構築はActiveMQの内部で行われ、必要なエイリアスコンバーターが配置されていることを確認する必要があります。最終的にPHPコンポーネントをJavaに置き換える場合、メッセージの送信はを使用するだけです。writeObject

于 2010-06-24T12:35:32.650 に答える
0

PHP用のSTOMPクライアントがあり、

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

于 2010-06-18T15:31:24.727 に答える
-2

私の見解では、コンポーネントの相互作用を特定の実装から解放する必要があります。ActiveMQ にはバグがあり、多くのシステムで削除され、RabbitMQ または Sun OpenMQ が使用されています。PHP で「メッセージ送信」ルーチンをコーディングすることは避け、代わりに「SendMessage」サーブレットを作成し、curl を使用して JSON エンコードされたメッセージを投稿する必要があります。次に、サーブレットは接続ファクトリーなどを使用します。わずかなオーバーヘッドで、mq-server 固有のコードから PHP コンポーネントを解放します。JSON 化されたロードで TextMessage を使用し、Jackson で簡単にエンコードおよびデコードできます。

于 2010-06-18T15:35:10.323 に答える