問題タブ [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.

0 投票する
1 に答える
1451 参照

permissions - Rabbitmqパーミッションを理解する

pub/subシステムをセットアップしようとしています。私のテクニカルディレクターは、私が割り当てられたプロジェクトにRabbitmqとSTOMPを使用することを提案しました。

このシステムでは、サーバー側で交換を作成し、サブスクライブするためにユーザーに渡す必要があります。ユーザーが取引所に登録して、利用可能になったときに情報を受け取ってほしい。クライアントが任意の交換をサブスクライブできるようにしたくありません(またはトピック交換用のルーティングキー。どのシステムを使用したいかはまだわかりません)。

たとえば、誰かが会社のwidgetInkで働いている場合、彼らが私たちのWebサイトにログインすると、widgetInk.whateverexchangeとAllUsers.whateverexchangeへの接続を受け取りますが、それだけです。クライアント側が他の何かをサブスクライブしようとすると、エラーが発生します。

RabbitMQチュートリアルをすべて実行し、セクション化の方法を確認しました。アクセス制御に関するこの基本的な記事を見つけましたが、3回読んだので、rabbitmqが私の要件に適しているかどうかはまだわかりません。

要件に合わせてRabbitmqを構成できますか?Rabbitmqの許可システムについて学ぶためにどのようなリソースを使用できますか?誰かがこのようなシステムを構築または使用したことがありますか?ZeroMQまたはActiveMQに切り替えることが私の最大の関心事でしょうか?

0 投票する
1 に答える
640 参照

c# - Apollo Stomp ActiveMQ が無効な一時宛先名を作成する

Windows 7 32 ビットでブローカーがサービスとして実行されている C# フレームワーク 4.0 を使用すると、安定版と開発版の両方で次のエラーが表示されます。

この結果、クライアントでコールがブロックされ、例外に応答する前にセッションがタイムアウトするため、一時キューを使用できなくなります。

0 投票する
1 に答える
5158 参照

php - PHP Stomp: キュー内のすべてのメッセージを読み取る

PHP を使用して ActiveMQ キュー内の特定のメッセージを見つけて削除する必要があります。

私の知る限り、これを行う唯一の方法は、現在キューに入れられているすべてのメッセージを読み取り、関心のある 1 つのメッセージに ACK を返すことです。 t すべてのメッセージを読み取りますが、一致するものだけに ACK を送信します)。

だから、私はこのコードを書きました(これは明らかに関連部分にすぎません):

私の論理によれば、これはうまくいくはずです。コードを実行している間、より多くのフレームをチェックしているにもかかわらず、1 つのランダムメッセージしか読み取られません。

次のフレームは、現在読み取っているフレームが ACK された場合にのみ準備されるようです。(すべてのメッセージを手動で確認すると、whileループは意図したとおりに機能し、すべてのメッセージが処理されます。

すべてのメッセージに ACK を送信せずに、キューからメッセージの完全なセットを取得する方法を知っている人はいますか? それらすべてに ACK を送信し、後で興味のないものをキューに戻すことはできますが、単一のメッセージを見つけるためのこの方法はすでに非効率的ですが、その方法ではさらに非効率的になります。

0 投票する
1 に答える
2795 参照

javascript - ウェブ経由のストンプアダプター付きのRabbitMQ

私のrabbitmqサーバーでstompプラグインを有効にしました。

私は一日中この例を実行しようとしています https://github.com/rabbitmq/rabbitmq-web-stomp-examples (およびその他) と私はいつも得る:

「Opening Web Socket...」サーバーで接続要求を受け取ります (うさぎのログで確認できます)

そしてしばらくすると、クライアントは次のように言って切断します。

注: telnetを介してキューにサブスクライブしようとしましたが、すべてがうまく機能しますが、Sockjsでは機能しません。

1) 誰か助けてくれませんか?

2) すべての例で、常に /stomp を URL に追加していることに気付きました。何故ですか?ウサギのストンプ アダプターで何か特別な設定をする必要がありますか、それともプラグインのような方法ですか?

この「チュートリアル」を使用してプラグインをインストールしました: http://www.rabbitmq.com/stomp.html

基本的に私はこのコマンドを実行します: rabbitmq-plugins enable rabbitmq_stomp

3) この例では、http:// を ws:// に置き換えようとしましたが、答えはまったく同じでしたが、より迅速に「接続が失われました」と答えました。Firebug コンソールでも、接続しようとしている URL がhttp://localhost:61613/stomp/info(またはhttp://localhost:61613/info、指定された URL に応じて ws://localhost:61613/info または ws://localhost:61613/stomp/info )であることに気付きました。

4) 別の例では、奇妙なことが起こりました。httpを許可すると、「接続が失われました」という答えが表示されます。それを ws に変更すると、クロスドメインの問題が発生し始めます。

助けていただければ幸いです。

0 投票する
1 に答える
1046 参照

node.js - Web to rabbitmq - web プラグインと nodejs amqp プラグインの比較

Webからrabbitmqに接続するかどうかを決定しようとしています:

ソリューション 1. Rabbitmq ストンプ プラグイン + Rabbitmq Web ストンプ プラグイン + Sockjs

ソリューション 2. amqp nodejs プラグインによる Rabbitmq + nodejs

シナリオ:

a) キューをサブスクライブする Web アプリが 1 つある b) そのキューに書き込みを行う Java アプリが 1 つある c) 解決策 1 で 1 つのブラウザーを開き、解決策 2 で別のブラウザーを開いている

私は両方をテストしましたが、何が起こるかは次のとおりです。

連続して 10.000 メッセージを送信すると、解決策 2 は解決策 1 よりもはるかに高速です。解決策 2 は接続を失うことはありません。解決策 1 ほとんどの場合、(すべてのメッセージを取得する前に) ランダムな時間で接続が失われます。

質問:

  1. ソリューション 1 で更新できる制限構成はありますか?

  2. 解決策 1 の問題は、Sockjs によるものですか? ストンププラグイン?ストンプウェブプラグイン?それらのすべて?nodejs を途中で追加すると、rabbitmq に埋め込まれた erlang プラグイン (rabbitmq stomp /rabbitmq web stomp プラグイン) よりもはるかに高速である理由がわかりません。

    注: ストンプ プラグインまたはストンプ Web プラグインは死ぬことはありません。常にポートをリッスンし続けます。

  3. 私の簡単な説明は、ブラウザーはそれほど多くの連続したメッセージを処理できず、nodejs はこれをうまく処理できますが、rabbitmq Web ストンプはそうではないということです。しかし、単なる推測です。これは正しいです?もしそうなら、どうすれば解決できますか?

  4. 解決策 1 は、解決策 2 よりも (レイテンシーにおいても) 優れているべきではありませんか?

注: パブリッシャーに各メッセージの送信の間に 5 ミリ秒の差を追加すると、この問題はなくなり、解決策 1 は解決策 2 のように実行されます (10.000 メッセージの場合)。

回答ありがとうございます。

よろしくお願いします、

エドゥアルド

0 投票する
1 に答える
107 参照

javascript - ActiveMQ デモがメッセージを飲み込む

ActiveMQ の Websocket チャット デモ (http://localhost:8161/demo/websocket/) を試しているときに、すべてのメッセージが 2 つの異なるブラウザー インスタンス間で送信されるわけではないようです。何らかの理由で、2 つおきのメッセージのみがブラウザの 1 つに送信されます。

誰もこれについて説明がありますか?これは私が設定する必要があるものですか?

編集:おそらく、デフォルトのセットアップでワイヤプロトコルとしてstompを使用することを追加する必要があります(Webソケットを使用するように構成ファイルを変更しただけです)。

Edit2: http://www.jmesnil.net/stomp-websocket/doc/に示されている例に従っても、動作に違いは見つかりませんでした。ただし、興味深い効果に気付きました。クライアントの 3 つのインスタンスを使用すると、最初のメッセージが送信クライアントで受信され、2 番目のメッセージが 2 番目のクライアントで受信され (他のクライアントでは受信されません)、3 番目のメッセージが受信されたことがわかりました。 3番目のクライアントで。すべてのクライアントが同時にメッセージを受け取ると思っていたでしょう。

0 投票する
3 に答える
2677 参照

rabbitmq - Rabbitmq+rpcを使用したwebstompプラグイン-reply-to

RabbitMQのSTOMPアダプターを使用してRPCを実行しようとしています。クライアントライブラリとして、STOMP over WebSocket(https://github.com/jmesnil/stomp-websocket/)ライブラリを使用しています。

ドキュメント(http://www.rabbitmq.com/stomp.html#d.tqd)から、reply-toヘッダーを設定する必要があることがわかります。「reply-to:/ temp-queue / foo」のようなものを指定することでこれを行い、サーバー側クライアント(node-amqp)でreplyToヘッダーが正しく設定されていることを確認しました(例:replyTo:'/ reply -queue / amq.gen-w2jykNGp4DNDBADm3C4Cdx')。まだサーバー側のクライアントで、「/ reply-queue/amq.gen-w2jykNGp4DNDBADm3C4Cdx」にメッセージを公開するだけでメッセージに返信できます。

ただし、RPC呼び出しが開始されたクライアントコードでこの応答を取得するにはどうすればよいですか?ドキュメントには、「SENDおよびSUBSCRIBEフレームに/ temp-queue宛先(...)を含めることはできません。応答キューへのサブスクリプションは自動的に作成されます」と記載されています。

では、どうすれば返信先キューにサブスクライブできますか?RPC呼び出しの結果を取得するにはどうすればよいですか?

前もって感謝します。

0 投票する
3 に答える
3075 参照

java - StompConnectionへのActiveMQレジスタリスナー

http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/example/src/StompExample.javaにある例のバリエーションを使用して、キューからメッセージを受信して​​います。私がやろうとしているのは、キューをリッスンし続け、新しいメッセージを受信したときに何らかのアクションを実行することです。問題は、関連するオブジェクトにリスナーを登録する方法が見つからなかったことです。私は次のようなことを試しました:

ただし、数秒後にタイムアウトが発生するため、これは機能しません(java.net.SocketTimeoutException: Read timed out)。このキューを無期限に聞くために私にできることはありますか?

0 投票する
1 に答える
1498 参照

php - ActiveMQ+WebSocket用のPHPStompクライアントライブラリ

WebSocketをサポートするActiveMQをインストールしましたが、JSデモを機能させることができます。私が今直面している問題は、PHPStompライブラリがWebSocketURIで機能しないことです。そのため、次のことを試してみてください。

私は得る:

接続に失敗しました:ブローカーURIスキームが無効です

PHP経由でメッセージを送信する方法について何か考えはありますか?私はこれを間違った角度から見ていますか?ActiveMQに接続するために通常のPHPソケット関数を試す必要がありますか?

ありがとう。