問題タブ [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.

0 投票する
3 に答える
1787 参照

c# - UnityをIoCとしてRebusServicebus

Rebusで初心者が始めたときに問題がいくつかあります。Rebus ReadMeファイルのすべての優れたサンプルはWindsorCastleを使用していますが、そのオプションはありません。代わりにUnityを使用する必要があります。

私の最初の課題は、例に示されているように、UnityIoCコンテナに適したアダプタを見つけることでした。

私はついに仕事をしているように見えるいくつかのコードをここで見つけましたが、 IContainerAdapterインターフェイスを自分で実装する必要があるため、おそらくより良いコンテナが存在します(それが必要かどうか疑問に思います...)。

しかし、私はそれと一緒に暮らすことができます...

私の次の問題はもっとひどいです、そして私はまだ知りません。Rebus Getting Started-exampleでは、以下を使用してIoCコンテナーにハンドラーを追加します。

上記はWindsorCastleの構文であり、同じアクションに対してUnityの構文がどのようになるべきかわかりません。だから私はここでいくつかの助けが必要です。Unityで動作する小さなソリューションへの参照を取得できるかどうかを提案します。

0 投票する
1 に答える
236 参照

servicebus - トポロジーの明確化

Rebus は A 地点から B 地点にメッセージを完全に転送できることを理解しています (トランスポート層として MSMQ を使用)。完全に明確にするために、Rebus は 1 対多のメッセージングも行うことができますか? つまり、ポイント A から送信されたメッセージはポイント B と C の両方で終了する必要がありますか?

また、可能であれば、どのように行うのでしょうか? 集中配布サイト (郵便局) が見えないので、通信はすべてのエンドポイントから他のすべてのエンドポイントへのチャネルで構成されていると想定しています (そのため、プロセスが他の 5 つのエンドポイントと通信する必要があるネットワークでは、このプロセスから 5 つのチャネルが放射されます)。この仮定を確認できますか?

0 投票する
1 に答える
1642 参照

rabbitmq - RabbitMQのカスタムトピック交換でRebusをうまく機能させるにはどうすればよいですか?

web.configRebusには柔軟なシステムがあり、カスタムを実装するか、実装することで、メッセージタイプごとに異なるエンドポイントを指定できますIDetermineMessageOwnership

私の知る限り、メッセージの所有権は単純に文字列で表されます。この文字列は、MSMQトランスポートを使用して、メッセージの配信先のキューを指します。RabbitMQでは、文字列がメッセージのトピックとして使用され、メッセージは「Rebus」という名前の汎用エクスチェンジに配信されます。Rebusは素晴らしい仲間なので、同じ名前を使用してRabbitMQサーバーにキューを設定し、Rebus交換内でトピックからキューへのバインディングを作成します。

私の質問はこれです:Rebusにキューとバインディングを作成せずに、各メッセージに関連するトピックが設定されたエクスチェンジにメッセージを配信することは可能ですか?

キューとバインディングを手動で宣言すると、ワイルドカードを使用したバインディングなどを使用して、すばらしいトピック交換を設定できます。これは、私の質問をより洗練されたセクシーに見せるために、ファンキーなバインディングを使用したトピック交換の素敵な図です。

RabbitMQでのトピック交換の図

0 投票する
1 に答える
493 参照

nservicebus - Rebus と分散ワーカー

現在、Rebus と NServiceBus を評価しています。Rebus には、NServiceBus の分散ワークロードに似た機能がまだありますか? ドキュメントから見分けるのは少し難しいです:)。

敬具クリスチャン

0 投票する
1 に答える
1332 参照

servicebus - Rebus を使用した耐久性のあるメッセージを使用した Pub/Sub

不明な数のサブスクライバーにメッセージを公開する方法が必要です。メッセージは耐久性/持続性があり、3 つの優先度 (高、中、低) に分類されている必要があります。サブスクライバーの 1 つは限られた負荷しか処理できず、一部のメッセージはより重要です。最初に処理される優先度の高いメッセージなど

Rebus でそれを行うにはどうすればよいですか? サブスクライバーごとに 3 つのキューが必要だと思いますか?

永続キューと MSMQ を使用したパブリッシュ/サブスクライブの例はどこにありますか?

0 投票する
1 に答える
460 参照

servicebus - Rebusでは同じプロセスサブスクリプションは不可能ですか?

同じプロセス/AppDomain内の内部バスとしてRebusを使用しようとしています。

Pub / Subサンプルを変更し、SameProcessHandlerを追加しました。

バスの開始後にサブスクリプションを追加しました:

最後に宛先キューを追加しました(必要かどうかはわかりません):

しかし、「Rebusは現在エンドポイントマッピングメカニズムで構成されていません」というエラーが表示されるので、サブスクリプション時に宛先を指定するか、構成を変更する必要があります。私はむしろ設定を使用しますが、どのように?

0 投票する
1 に答える
1562 参照

c# - 作業単位内の複数のメッセージに対する同じRebusハンドラーインスタンス

Rebusサービスバスを使用して、同じスコープ/トランザクション内の同じハンドラー(同じインスタンス)でイベントCustomerCreatedとPreferredCustomerを処理するなど、関連するメッセージをバッチで処理したいと思います。

同じハンドラーが両方のメッセージ/イベントを処理しています。

メッセージを送信するとき、私はバッチ操作を使用します(NServiceBusでメッセージを転送します)

ハンドラーの寿命を制御するために、私はウィンザー城のスコープ付きライフスタイルを使用します

そして、ScopedUnitOfWorkをインスタンス化するカスタムUnitOfWorkManager

CustomUnitOfWorkManagerを使用するように最終的に構成されたRebus

これは正しいアプローチですか?

私の限られたテストは、これが機能するはずであることを示しています。これを拡張して、ScopedUnitOfWork内のデータストアに対するトランザクション管理も含めることができます。

0 投票する
1 に答える
552 参照

rebus - Rebus でメッセージをフィルタリングするにはどうすればよいですか?

ハンドラーが受け取る各メッセージには、集約ルートの状態全体が含まれます。その後、システムはこのデータに基づいて必要な操作を実行できます。私のシナリオでは、メッセージ内のデータに基づいてアクセスを許可します。たとえば、部屋 A と B へのアクセスです。メッセージには、許可されたアクセスのセット全体が含まれます。MSMQ などのメッセージング システムは順序どおりの配信を保証しないため、これらのメッセージは順不同で到着する可能性があります。

メッセージ #1 は部屋 A と B へのアクセスを許可するが、メッセージ #2​​ は部屋 A へのアクセスのみを許可するシナリオ& B. これは望ましい結果ではありません。ルーム A へのアクセスのみを許可する必要があります。各メッセージにはタイムスタンプが含まれており、公開時に設定されます。このタイムスタンプを使用して、順不同で到着する古いメッセージを削除したいと思います。たとえば、メッセージ #2​​ がメッセージ #1 の前に到着した場合、メッセージ 1 # を破棄する必要があります。

このフィルターを各ハンドラー メソッドに実装することもできますが、それは面倒なので、Rebus にEAI Message Filtersのラインに沿った何かがあることを願っています。

私は他のオプション/実装を受け入れていますか?

0 投票する
1 に答える
531 参照

nlog - Nlog の rebus 構成

Rebus と共に NLog を使用しようとしていますが、例外が発生しています: タイプのコンストラクターにアクセスできません: Rebus.Configuration.RebusConfigurer。必要な権限は付与されていますか?

手がかりはありますか?

明確にするために、両方のパッケージは 0.32.3 であり、スタックトレースは次のとおりです。

0 投票する
1 に答える
1992 参照

c# - Rebus での特定のメッセージ タイプのシリアル処理

サード パーティの Web サービスと対話する Rebus メッセージ ハンドラーがあります。すぐには制御できない理由により、この WCF サービスは、独自のデータベースでデータベース デッドロックが発生したため、頻繁に例外をスローします。その後、Rebus はこのメッセージを 5 回処理しようとします。これは、ほとんどの場合、5 回のうちの 1 回が幸運であり、デッドロックに陥らないことを意味します。しかし、メッセージがデッドロックに続いてデッドロックになり、エラー キューに入ることがよくあります。

長期的な目標となるデッドロックの原因を修正する以外に、次の 2 つのオプションが考えられます。

  1. 成功するまで、この特定のメッセージ タイプのみを試してください。できればタイムアウトを設定できるので、継続的に試行してプロセスをさらに詰まらせるのではなく、「デッドロックが 5 回発生した場合は 5 分後に再試行してください」とします。私はすでに Thread.Sleep(random) を実行してメッセージをいくらか広めていますが、5回試行してもあきらめます。

  2. この特定のメッセージ タイプを、メッセージを処理するワーカーが 1 つしかない別のキューに送信して、これが並列ではなく逐次的に行われるようにします。現在の構成では 8 つのワーカー スレッドを使用していますが、Web サービスが同時に呼び出され、メッセージが相互に干渉するため、デッドロックの状況が悪化するだけです。

オプション#2が私の好みですが、これが可能かどうかはわかりません。現在、受信側の構成は次のようになっています。

そして、受信側の .config :

構成からわかることから、「リッスン」する入力キューを 1 つしか設定できません。流暢なマッピング API を介してこれを行う方法を実際に見つけることもできません。それも入力キューとエラーキューを1つだけ取るようです:

基本的に、私が探しているのは、次のようなものです。

私の要件を処理する方法に関するヒントはありますか?