問題タブ [stomp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ActiveMQのフェイルオーバーメカニズムはC#(openwire)およびpython(stomp)クライアントでサポートされていますか?
ActiveMQを使用してPythonサービスをC#クライアントに接続したいと思います。C#(openwire)とpython(Stomp)でフェイルオーバー接続を指定する方法はありますか?
ActiveMQは、共有ファイルシステムマスタースレーブで構成されます。
udp - UDP 経由で STOMP プロトコルを使用するように Apache ActiveMQ を構成できますか?
クライアントと STOMP ブローカーとして構成された ActiveMQ サーバー間のトランスポートとして TCP/IP を利用して正常に動作している Ada の STOMP バインディングを開発しています。UDP もサポートすることを考えました (つまり、UDP を介した STOMP) が、ActiveMQ ドキュメントまたは Web 検索に適切な情報が不足しているため、これは不可能であり、おそらく意味がないことを示唆しています。 -)
いずれかの方法での確認 (および可能であれば ActiveMQ 構成の抜粋) をいただければ幸いです。
message - perl から JMS に ObjectMessage を pss する方法
perl オブジェクトをメッセージとして JMS サーバーに送信したいと考えています。Net::Stomp を使用して、perl クライアントから jms サーバーにメッセージを送信しています。テキスト メッセージを送信することはできますが、Java オブジェクトに似たオブジェクトを作成して jms に送信し、その perl オブジェクトを jms サーバーで Java オブジェクトに変換したいと考えています。誰でも助けることができますか?
java - ActiveMQからのPHPのトリガー
背景: 現在のシステムには、HTTPコールバックを使用して相互に通信する2つのサービス(1つはJavaで記述され、もう1つはPHPで記述されている)が含まれています。ActiveMQ(または必要に応じて別のアーキテクチャ)を使用して、HTTPコールバックからメッセージベースのアーキテクチャに移行したいと考えています。おそらくSTOMPを使用してそれらの間で通信します。最終的に、PHPサービスはJavaで書き直されますが、それはこのプロジェクトの一部ではありません。
質問: ActiveMQシステムは、PHPシステムがサブスクライブしているキューに新しいメッセージが投稿されたことをPHPに通知するにはどうすればよいですか?現在のシステムでは、コールバックは本質的にPHPを呼び出し、それをトリガーします。これは、メッセージベースのアーキテクチャでなくなります。
可能な解決策:
- Cronは、新しいメッセージをチェックするPHPスクリプトを定期的に呼び出します。うん。
- ループしてスリープし、新しいメッセージをチェックする、長時間実行されるPHPプロセス。やっかい?
- ActiveMQは、新しいメッセージが投稿されたときにPHPスクリプトを呼び出します。いい、どうやって?
- ??
ruby - stomp および activemq.prefetchSize=1 を使用した activemessaging
Q1 と Q2 の 2 つのキューを持つ単一の activemq ブローカーがある状況があります。Activemessaging を使用する 2 つの Ruby ベースのコンシューマがあります。それらをC1とC2と呼びましょう。両方のコンシューマーが各キューをサブスクライブします。各キューにサブスクライブするときに activemq.prefetchSize=1 を設定しています。ack=client も設定しています。
次の一連のイベントを検討してください。
1) 長時間実行ジョブをトリガーするメッセージがキュー Q1 にパブリッシュされます。これを M1 と呼びます。
2) M1 がコンシューマー C1 にディスパッチされ、長い操作が開始されます。
3) 短いジョブをトリガーする 2 つのメッセージがキュー Q2 に発行されます。これらを M2 および M3 と呼びます。
4) M2 は C2 にディスパッチされ、C2 は短時間のジョブを迅速に実行します。
5) C1 がまだ M1 を実行しているにもかかわらず、M3 が C1 にディスパッチされます。prefetchSize=1 が接続ではなくキュー サブスクリプションに設定されているため、C1 にディスパッチできます。したがって、Q1 メッセージが既にディスパッチされているという事実は、1 つの Q2 メッセージのディスパッチを停止しません。
activemessaging コンシューマーはシングルスレッドであるため、最終的には、C1 が M1 の処理を完了するまで、M3 は長時間 C1 を待機します。そのため、コンシューマー C2 がアイドル状態であるにもかかわらず (メッセージ M2 ですぐに終了するため)、M3 は長時間処理されません。
基本的に、Q1 の長いジョブが実行され、Q2 の短いジョブが大量に作成されると、Q2 の短いジョブの 1 つだけがコンシューマーでスタックし、Q1 の長いジョブが完了するのを待機します。
サブスクリプション レベルではなく接続レベルで prefetchSize を設定する方法はありますか? M1 を処理している間、C1 にメッセージをディスパッチしたくありません。もう 1 つの方法は、Q1 の処理専用のコンシューマーを作成してから、Q2 の処理専用の別のコンシューマーを作成することです。しかし、Q1 のメッセージはめったにないので、私はそれをしたくありません。Q1 の専用のコンシューマーは、ほとんどの時間、メモリを拘束してアイドル状態になります。
java - StompのMessageMap形式は完全に使用できませんか?
JavaのMapMessageをActiveMQに送信し、PHPのStompを使用して取得しています。私のメッセージ作成コードは次のようになります。
PHPでそれらを取得すると、作成される配列は次のようになります。
私はそれで何をすべきですか?Stompに合理的な方法でシリアル化を解除するように説得する方法はありますか、それともPHPの呪文によって、この配列へのアクセスの負担が軽減されますか?特に、2つの文字列ではなく文字列と整数がある場合、配列は完全に異なって見えるため、エントリを繰り返し処理して連想配列を作成することはできません。
java - ActiveMQ/Stomp を使用した PHP と Java 間の通信
バックグラウンド
メッセージ キューを介して相互に通信する必要がある 2 つのサービスがあります。1 つは PHP で記述された従来のサービスであり、もう 1 つは Java で記述されています。遅かれ早かれ、PHP サービスは Java で書き直されます。それらが互いに通信する現在の方法は、他のサービスがポーリングする共有データベースに書き込むことです。これは私が回避しようとしているものであり、メッセージ キューに置き換えようとしています。
問題
私が現在取り組んでいる通信は、PHP サービスから Java サービスへの通信です。比較的複雑なオブジェクト (文字列と整数、および文字列と整数のリストとマップ) を送信する必要があります。理想的には、このソリューションは PHP で機能し、Java で機能することが理想的です。それがこのプロジェクトの遺産になるからです。
可能な解決策
-
1.
messaging - 0MQ はプロトコル、レイヤー、またはその両方ですか? STOMPと併用できますか?
私は STOMP と 0MQ の両方に不慣れで、自分自身を結び目に結び付けましたが、一言で言えば、PHP MOM または多数の PHP MOM からの対話を使用して、ブラウザーでのクライアント間の通信を容易にしたいと考えています。WebSocket を使用して、html5 ブラウザー クライアントと MOM エンドポイント間に永続的な二重接続 (利用可能な場合) を提供し、それらのエンドポイントを使用して、1-1、1-多く、多対 1 の関係。
MOM エンドポイントは、さまざまな目的で他のサーバーと通信したり、それらの間で通信したりする可能性があります。0MQ は、これらのサーバー間で情報を迅速に交換するための実行可能な方法であると考えています。クライアント間のメッセージング用のプロトコルとして、STOMP は良さそうです (ただし、プロトコルの定義に問題があることは認識しています)。
....だから、ここが私の混乱のポイントです。STOMP を使用するには、MOM が STOMP ブローカーである必要があり、STOMP ブローカーである場合、0MQ は「ブローカーレス」メッセージング レイヤーであるため、両方を使用する目的を無効にすることはありませんか?
明確にするために、MOM - MOM 通信には 0MQ、クライアント - クライアント通信には STOMP を検討しています。
もちろん、クライアント間の通信を容易にするために 0MQ を再利用する方法はありますか? 私の本当の混乱は0MQにあると思います-それはプロトコルではなく軽量のメッセージングレイヤーですか、それともその両方ですか? レイヤーのみの場合、0MQ を使用して STOMP メッセージを転送できませんか?
誰かが私のために0MQに光を当てることができれば、私はとても感謝しています-ありがとう!
activemq - 構築済みのAMQPおよびSTOMPクライアント(GUIクライアントの場合と同様)
MQサーバーで遊んでそのセマンティクスに慣れるためのクライアント(クライアントライブラリではなくGUIクライアントのように)を探しています。ボタン(またはテキストコマンド)を押すだけでメッセージを送受信し、サーバーのキューとメッセージのステータスについて更新するものもあります。管理はボーナスになります。UIはグラフィカルである必要はありません(つまり、コマンドラインクライアントで問題ありません)。
サーバーはおそらくRabbitMQを実行するので、ActiveMQと同様に、RabbitMQ固有のものはすべて問題ありません。しかし、私はむしろ一般的なAMQPまたはSTOMPツールが欲しいです。
それで、そのようなものは存在しますか?
一部の管理ツールと監視ツールには両方のサーバーディストリビューションが付属していますが、クライアントは付属していません。