問題タブ [node-amqplib]

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

node.js - amqplib: オープン ハンドシェイク中にソケットが突然閉じられました

私がやろうとしていること

私は rabbit-mq パブリッシャーとサブスクライバーを作成しようとしています。rabbit-mq サーバーを再起動しようとするまで、期待どおりに動作します。

機能するもの

rabbitmq:3-managementDocker イメージ、ampqlib 5.3、および Node.jsを使用11.10.0して、この単純なプログラムを作成します。

ということで、まずはチャンネルを2つ作りました。1 つはパブリッシャーとして、もう 1 つはコンシューマーとして。

パブリッシャーはsomething to doメッセージをtasksキューに送信します。

次に、コンシューマーはメッセージをキャッチし、 を使用して画面に出力しconsole.logます。

期待どおりに動作します。

うまくいかないこと

最初の試み

前回の試みと同様ですが、今回は続行する前に rabbit-mq コンテナーを停止して開始 (サーバーを再起動) しようとしました。

動作しません。代わりに次のエラーが表示されます。

2 回目の試行

私の最初の試みはうまくいきませんでした。したがって、サーバーを再起動した後、新しいチャネルを作成しようとします。

今回は、代わりに次のエラーが発生しました。

よくわかりませんが、エラーはhttps://github.com/squaremo/amqp.node/issues/101に関連している可能性があります。

私が欲しいもの

サーバーの再起動後にrabbitmqに再接続するための回避策/解決策が必要です。説明/提案も歓迎します。

編集

さらに深く掘り下げて、コードを少し変更してみます。

そして、私はこの出力を取得します:

したがって、 amqplib は再接続できますが、 channel の作成に失敗すると思います。