問題タブ [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.
node.js - amqplib: オープン ハンドシェイク中にソケットが突然閉じられました
私がやろうとしていること
私は rabbit-mq パブリッシャーとサブスクライバーを作成しようとしています。rabbit-mq サーバーを再起動しようとするまで、期待どおりに動作します。
機能するもの
rabbitmq:3-management
Docker イメージ、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 の作成に失敗すると思います。