問題タブ [rebus]
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.
nservicebus - ServiceBus タイプ - キュー分離のベスト プラクティス
一方向モードで動作するサービス バス インスタンスがあるとします。サービス バスは、Foo と Bar の 2 種類のメッセージを生成します。これらのメッセージ タイプはどちらもデータベースに保存されます。
したがって、そうするための2つのアプローチを見ることができます。
2 つのキュー (FooQueue、BarQueue) と 2 つのバス インスタンス (2 つのプロセス) を持つ - 1 つは FooQueue からの受信用、もう 1 つは BarQueue からの受信用
Foo および Bar メッセージ用の 2 つのハンドラーを持つ 1 つのキューと 1 つのバス インスタンスを用意する
どのアプローチをいつ使用するかを決定するためのベストプラクティスは何ですか(おそらく決定木ですか?:))。
前もって感謝します
rebus - MSMQ による Rebus: 不規則な配信時間
アプリケーション コンポーネント間のメッセージ ベースの通信には、Rebus と MSMQ を使用しています。コンポーネントはすべて同じマシン上で実行されています。
通常、メッセージの送信と受信の間の時間は 1 秒未満です。しかし、システムが 1 分ほどアイドル状態 (メッセージが送信されていないことを意味します) の場合、次の 1 つまたは 2 つのメッセージが配信されるまでに約 5 秒かかることがあります。MSMQ パフォーマンス カウンターは、これらのメッセージがその間キューに留まっていることを示しています。
このアプリケーションでは、メッセージの配信時間が一定 (1 秒未満) であることが望ましいです。
この動作の理由は何でしょうか? MSMQ または Rebus でメッセージの配信時間に影響を与える方法はありますか? より安定した配達時間を得るために、別の輸送タイプを選択する必要がありますか?
rebus - 1 つの rebus プロセスで複数の入力キュー
トップシェルフとリバスを使用して「マルチワーカー」アプリケーションを作成しています。
私の考えは、MyWorker1Namespace
- MyWorker1Namespace.Messages
、MyWorker2Namespace
-MyWorker2Namespace.Messages
パターンを使用することです。
複数のプロセスにまたがらずにアプリケーションを実行したいのですが、必要に応じて複数のプロセスに分割できるように、複数の入力キューを使用してアプリケーションを構成したいと考えています。
Rebus を使用して、1 つのアプリケーションで複数の入力キューと複数のワーカー スレッドを宣言する方法はありますか?
構成は次のようにする必要があると思います。
c# - メッセージにワーカー ID が含まれている場合、そのワーカーのみがそのメッセージを処理するように Rebus を構成します。
Rebus をバッチ システムのバックボーンとして実行しています。複数のワーカーで処理できる複数のキュー (つまり、メッセージ タイプ) があります。各ワーカーは、1 つのメッセージ タイプのみを処理できます。たとえば、message_1 の場合、このメッセージを処理できる 2 つのワーカー (worker1 と worker2) があります。現在、ハンドルが空いている最初のワーカーがメッセージを処理します。これはデフォルトの動作であり、正常に機能しています。
私の質問は、メッセージにワーカー ID (たとえばワーカー 2) が含まれている場合、そのワーカーだけがそのメッセージを処理できるように、何らかの方法で Rebus をセットアップできるかどうかです。メッセージにワーカー ID がない場合は、デフォルトの動作 (上記を参照) が優先されます。
rebus - Rebus でエラー メッセージの内容をログに記録する方法は?
例外が発生したときにメッセージの内容を記録する方法はありますか?
さまざまなログ拡張機能を調べましたが、CorrelationId をログに記録しているだけです。また、メッセージ内容はご利用いただけません。
MessageContext には CurrentMessge プロパティがありますが、ロガーが例外を書き込む時点では使用できません。
メッセージの内容をログに記録できる PoisonMessage イベントを処理しようとしました。
これはうまく機能しますが、ログに2つのエラーがあり、1つはハンドラーからのもので、もう1つはロガーからのものです。
この要件を処理するためのより良い方法があるかどうか疑問に思っています。
.net - 高価な初期化/作成を伴う Rebus とハンドラー
私の知る限り、Rebus を含むバスの通常の動作は、到着して一致するメッセージごとに新しいハンドラーを作成することです。ほとんどの場合、これで問題ありませんが、高価な初期化ハンドラが必要になる場合があります (サービス プロキシのインスタンス化、接続、キャッシュへのオブジェクトのロードなどが必要になります)。これらのハンドラーが最初に作成されたら、理想的にはワーカーごとに 1 つのインスタンスをキャッシュして、何度も何度も作成しないようにする方法はありますか?
rebus - rebus で簡単な返信を実装する方法
上記のコードを使用して、消費者にメッセージを送信しています。コンシューマーは bus.Reply を使用しますが、上記のコードは明らかに機能しません。
消費者からの返信を受け取りたいだけです。これはどのように達成されますか?