問題タブ [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.
node.js - amqp rabbitmq チャネル スコープ
私は node.js で amqplib を使用していchannels
ます。
これは、amqplib のドキュメントからのものです。Channels are multiplexed over connections, and represent something like a session, in that most operations (and thereby most errors) are scoped to channels.
amqp 接続を開き、チャネル、交換、およびキューを作成する基本的なコードを次に示します。
上記のコードでは、それらが定義されたチャネルにのみ存在しますかexchange '1'
? つまり、別のチャネルqueue 'a'
から交換するメッセージを公開する場合、交換は引き続きメッセージをルーティングしますか?a
a
node.js - amqp.node が接続の切断を検出しない
クライアントがRabbitMQキューからメッセージを消費するsocket.ioサーバーを実行するnode.jsスクリプトがあります。最近、Amazon AWS に移行し、RabbitMQ は 2 台のマシン (冗長インスタンス) のクラスターになりました。AMQP 接続はときどき失われます (これは、冗長な VM を備えた高可用性環境から生じる制限であり、対処する必要があります)。再接続が試行されると、DNS は接続先のインスタンスを選択します (これはデータ レプリケーションを備えたクラスターであるため、どのインスタンスに接続するかは問題ではありません)。
問題は、再接続が試行されないことです。しばらくして接続が失われると、amqp.node は接続が失われたことに気付かないようです。また、コンシューマーはメッセージの受信を停止し、socket.io サーバーは単に新しい接続の受け入れを停止します。
RabbitMQ URL に 55 秒のハートビート タイムアウト (socket.io ハートビート タイムアウトと混同しないでください) が設定されており、amqp.node のコールバック API で「エラー」および「クローズ」イベントをチェックしていますが、それらは明らかに発行されていません。キューは、消費されたメッセージが確認応答されることを期待しています。ノードスクリプトが接続の切断を検出して終了するようにしたいので、環境は自動的に新しいプロセスを開始し、接続を再度確立します。
コードは次のとおりです。おそらく、amqp.node コールバック API などで何か問題が発生しています。
node.js - Cannot connect to an exchange in rabbitmq
I'm trying to achieve something very simple - connect to a RabbitMQ exchange and consume messages. I'm using https://github.com/postwait/node-amqp. Here's the NodeJS code.
However, when I run the server, the line console.log('Connected to RabbitMQ')
gets executed repeatedly forever. Of course, this behavior disappears when I remove var exchange = connection.exchange('foobar')
.
I'm fairly new to NodeJS, and I've tried reading up the docs and Googling around for example code, but nothing works. What am I missing?
node.js - node-amqp ライブラリを使用した RabbitMQ の exchange.publish() ごとにチャネルが増加し続けます
nodejs プロジェクトに node-amqp ライブラリを使用しています。問題を github プロジェクト ページにも投稿しました。
新しいチャネルを作成し続け、それらは永遠にアイドル状態のままです。1 時間後、チャネルは ~12000 になりました。交換と公開のオプションを確認しましたが、これまでのところ解決に近づいていません.
コードの何が問題になっていますか、また、問題に対する rabbitmq サーバーのオプション/設定はありますか?
サンプルコードは次のとおりです。
rabbitmq - Rabbitmq: envelop.message.body と envelop.message.pool の違い
私は 1 つのプロデューサーに基づいてnodejs
おり、使用した javascript ライブラリはamqp.nodeであり、コンシューマーはC ライブラリによって実装されています。
rabbitmq 管理 Web から、メッセージがキューにプッシュされ、コンシューマーに配信されることがわかります。ただし、コンシューマーではamqp_consume_message
returnは null です。この場合、どうすればデバッグできますか?AMQP-RESPONSE-NORMAL
envelop.message.body
これがrabbitmqからのメッセージを消費するための私のコードです
アップデート
さらに調査した結果、これらのメッセージはenvelop.message.pool.pages
. との違いを知りmessage.body
たいmessage.pool
node.js - RabbitMQ (node-amqp 経由): 未処理の接続エラー: UNEXPECTED_FRAME - クラス 60 のコンテンツ ヘッダーが予期されていましたが、代わりに非コンテンツ ヘッダー フレームを取得しました
node-amqpを使用して RabbitMQ に接続しています。セットアップは次のとおりです。
- 2 つの RabbitMQ サーバー (以降「ウサギ」)、1 つは「受信」、もう 1 つは「通知」と呼ばれます。
- データは「着信」うさぎに公開され、アプリはデータベースに書き込む前に特定の数のメッセージをバッファーします (「バッファー」アプリ)。
- 次に、バッファはこれらのメッセージを、システムの他の部分 (UI など) に通知するように設計された「通知者」ウサギに発行しようとします。
「着信」からメッセージを引き出すことは問題なく、データベースへの書き込みなどはすべて機能しますが、「通知者」への公開に関しては、最初のいくつかのメッセージを公開しようとした後に次のエラーが発生します。
接続は次のようになります。
(取引所が開かれたというメッセージが表示されるので、実際には正常に開きます。)
次に、次のようにこの取引所に公開しています。
これは、データがデータベースに書き込まれると、ループで呼び出されます。
このエラーは 1 回だけ表示されますが、RabbitMQ 管理インターフェイスを見ると、キューにメッセージがまったく発行されていません。fanout
キューの種類を からに変更しようとしましtopic
たが、役に立ちませんでした。さらに、confirm: true
確認コールバックが呼び出されないため、フラグは何もしていないように見えます。これは、新しいメッセージを発行する前にメッセージの確認を待つことができないことを意味します。
エラーメッセージが少しわかりにくいので、何が問題なのかわかりません。多くのものを(ほぼ)同時に公開しようとする試みに関係している可能性がありますが、確認のコールバックがなければ、これを止めることはできません...