問題タブ [easynetq]
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.
rabbitmq - RabbitMq クラスタリング
私はRabbitMqが初めてです。ここの概念が理解できません。シナリオを見つけてください。
実行中の両方のマシンにrabbitmqをインストールした2台のマシン(RMQ1、RMQ2)があります。再び、RMQ2 をクラスター化して RMQ1 に参加させました
ここにマシンのステータスが表示される場合は、次のようになります。
RMQ1で
RMQ2で
メッセージをパブリッシュおよびサブスクライブするために、RMQ1 に接続しています。これで、RMQ1 に送信またはメッセージを送信するたびに、RMQ1 と RMQ2 の両方にミラーリングされたメッセージが表示されます。これは、両方のノードが同じクラスターにあるため、ノード間でミラーリングされていることを明確に理解しています。
RMQ2 をダウンさせたとしましょう。メッセージが RMQ1 にパブリッシュされているのが見えます。
しかし、RMQ1 を停止すると、メッセージを発行できなくなります。このことから、RMQ1 がマスターで、RMQ2 がスレーブであることがわかります。
コードを変更せずに、以下の質問があります。
- RMQ2 にメッセージを受け入れるようにするにはどうすればよいですか。
- 高可用性キューの意味は何ですか。
- この種のシナリオを実装するための戦略はどうあるべきか.
助けてください
rabbitmq - EasyNetQ コンシューム バイナリ メッセージ
次のコードを使用して、生のメッセージをキューに発行します。
メッセージがキューに配信され、RabbitMQ のコンソールからキューに 1 つのメッセージが表示されます。ただし、次のコードでそれを消費しようとすると、何も返されません。
メッセージが Rabbit のコンソールから配信されていることがわかりますが、何も出力されず、メッセージはまだキューに入っています。私は何が欠けていますか?
c# - EasyNetQ - 非汎用メッセージによる IAdvanceBus からのメッセージの消費
はい、このサブスクリプション ID で自動サブスクライバー機能と通常のサブスクライブ方法を使用できますが、このソリューションは RMQ キューとエクスチェンジでは少し見苦しくなります。メッセージを追跡して分析するのは困難でした。
私は事前バスを使用し、独自の交換とキューを作成しました。公開には成功しましたが、消費部分は少しがっかりです。現在、この方法を使用しています。
これは良いことですが、リスナーが 100 人いる場合の問題はありますか?
登録タイプIHandlerRegistrationを確認しましたが、ジェネリックのみを使用していますが、ジェネリック以外の方法を使用できますか?
お気に入り :
このようにして、このメッセージを使用するアセンブリをスキャンできます。
反対側では、バスの構築を介して登録します。
しかし、事前バスの消費からのコードを見ると、工場から作成されたコードを消費し、コンテナから読み取らないため、登録を尊重していません。これが根本的な原因だと思います。
c# - RabbitMQ でのメッセージの持続性
私は、RabbitMQ を使用してメッセージを送受信する小さなアプリを作成しています。すべて正常に動作していますが、メッセージの持続性に苦労しています。
サーバーを再起動してもメッセージがキューに残るようにしたい。交換レベルとキュー レベルでの持続性の概念を理解し、それらを true に設定しました (むしろ、デフォルトで true になっています)。したがって、RabbitMQ サーバーを再起動すると、交換とキューはそのまま残りますが、キュー内のメッセージは削除されます。
EasyNetQ.IBus インターフェイスを使用してメッセージを送信しています。
ありがとう
rabbitmq - EasyNetQ は nack をサポートしていますか?
私が本当にやろうとしているのは、現在の消費者によって拒否された場合に備えて、メッセージをキューに残すことです。RabbitMQ では、これを達成するために NACK を送信できます。NACK は EasyNetQ でサポートされていますか? 私が探している動作を達成する別の方法はありますか?
更新: 多くの応答はありません。そのため、EasyNetQ での NACK の欠如を一般的にどのように処理しているのか疑問に思っています。basic.reject
消費者を「すべてのメッセージをいつでも処理できる」シナリオに制限するのと同等のものを持たないこと。コンシューマーが特定の「拒否された」例外をスローして、EasyNetQ がメッセージをエラー キューにデキューし、それらのエラーを含むメッセージを再度キューに入れることができると思います。他に他の回避策を講じている人はいますか?
easynetq - EasyNetQ - EasyNetQ_Default_Error_Queue メッセージに元のキュー名を含めるにはどうすればよいですか?
パブリッシャー/サブスクライバー パターンを使用していて、サブスクライバーの処理中に例外がスローされた場合、EasyNetQ はデフォルトでメッセージを EasyNetQ_Default_Error_Queue に入れます。
問題は、エラー メッセージに元の交換名しかないことです。本当に必要なのは元のキュー名です。これにより、メッセージを交換ではなくキューに再発行できます。
エラー メッセージにキュー名を含めるにはどうすればよいですか?
EasyNetQ_Default_Error_Queue のサンプル エラー メッセージ: