問題タブ [node-amqp]

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 投票する
2 に答える
9667 参照

node.js - node.js amqpモジュールを使用しているときに、AQMPメッセージバッファをJSONオブジェクトに変換する方法は?

キューからメッセージを読み取るために node.js amqp モジュールを使用しています。以下は、キューに利用可能なメッセージがある場合に呼び出されるコールバックです。

ありがとう。

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

node.js - node-amqp で何か問題が発生したときにイベントを「閉じる」のはなぜですか?

(node-amqp と rabbitmq サーバーを使用しています。)

何か問題が発生した場合に、なぜ近いイベントが発生するのかを推測しようとしています。たとえば、キュ​​ーへの接続を開こうとすると (パラメーターが正しくない)、エラー イベントが発生します。それは大丈夫です。

しかし、何らかのエラーが発生した後、クローズ接続も受け取ります (その場合、失敗したソケットをキューにクローズするためかもしれません)。その後、自動再接続し、(最初の) 準備完了イベントを受け取ります。

問題:

何か問題が発生した場合、エラーが発生しますが、「準備完了」イベントが発生し、do_a_lot_of_things が再実行されます。私のアプローチは間違っていますか?

よろしくお願いします

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

angularjs - node-amqp + socketio:キューのサブスクライブ/サブスクライブ解除を同期する方法は?

サーバー側にノードとエクスプレスを備えたangularjsアプリがあります。node-amqp と socket.io もあります

次の動作を実装したい

アプリには、リアルタイム データを含むテーブルを表示するページ (ルート、角度ビュー) があります。データは、socket.io と amqp を使用してリアルタイムで更新され、アプリの外部にある rabbitMQ サーバーからデータをストリーミングします。

ユーザーがブラウザでこのページ/ルートにアクセスしたとき

  1. クライアントがソケット イベント「subscribe」を発行します</li>
  2. サーバー, ソケットイベントで “サブスクライブ”,
    • ウサギのキューを宣言します
    • ウサギのキューを交換にバインドします
    • ウサギのキューからのメッセージ/データを購読します
    • ユーザー/クライアントにデータを送り返すソケットイベント「データ」を発行します

ユーザーがページを離れたとき、つまりルートを変更したとき

  1. クライアントがソケット イベント「unsubscribe」を発行します</li>
  2. サーバー, ソケットイベントで “登録解除”,
    • キューから退会します

私の問題は次のとおりです: queue.subscribe と queue.unsubscribe が同期されていることを確認するにはどうすればよいですか? ユーザーが一連のルート変更をすばやく実行した場合: 訪問/脱退/訪問/脱退/訪問/脱退 加入と脱退の順序が逆になることがあり、サーバーは新しい加入が完了する前に前回の加入を 2 回脱退します。なにか提案を?これは私が試したものですが、機能していません:

クライアント側: controller.js

サーバー側: server.js

サーバー console.log メッセージ: (visit#3 と leave#3 は同期していません)

0 投票する
2 に答える
1664 参照

node.js - Node-amqp - X 試行後にメッセージを拒否する

構成可能なリキューを数回試行した後にメッセージを拒否するメカニズムを実装するにはどうすればよいですか?

つまり、キューを購読している場合、同じメッセージが X 回以上再配信されないことを保証したいと考えています。

私のコードサンプル:

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

node.js - キューの永続化: node-amqp のキュー オブジェクトをシリアライズ/デシリアライズします

このモジュールを使用して、node-amqprabbitmq サブスクリプションを管理しています。具体的には、各ユーザー/セッションに排他的/プライベート キューを割り当て、REST インターフェイスを介してバインディング メソッドを提供しています。つまり、「キューをこの exchange/routing_key ペアにバインド」し、「キューをこの exchange/routing_key ペアにバインド解除」します。

ここでの課題は、キュー オブジェクトへの参照をメモリ内 (たとえば、モジュール全体のスコープを持つオブジェクト内) に保持しないようにすることです。

必要なたびに接続からキュー自体を取得するだけでは難しいことがわかりました。これは、おそらくamqp 0.9.1 リファレンスからの次の違反を避けるために、キュー オブジェクトがバインディングのタブを内部で保持しているためです。

クライアントは、存在しないキューのバインドを解除しようとしてはなりません。エラーコード: 見つかりません

プロパティでJSON.stringify/JSON.parseを使用するため、connect-mongoを使用して、キューオブジェクトをセッションオブジェクトのプロパティとして単純に設定しようとしました。残念ながら、循環構造のため、キュー オブジェクトは「文字列化」できません。

node-amqp モジュールからキュー オブジェクトを永続化するためのベスト プラクティスは何ですか? シリアライズ/デシリアライズは可能ですか?

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

node.js - node-amqp、複数のバインド コールバック

ベストプラクティスのいくつかの指針が欲しいです。バインディングを介してデータをポーリングする前に、バインディングが完了するのを待つ必要があります。これの多くは、クライアントに戻って並行して行われます。ただし、進行中のバインド操作が既にある場合は、別のバインド操作を発行すると、コールバックが置き換えられます。

バインディング操作ごとに個別のコールバックをサポートするように node-amqp にパッチを適用したい場合、どのように進めればよいですか?