問題タブ [nservicebus5]
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 - NServiceBus - すべてのアセンブリをスキャンしています
NServiceBus.dll - バージョン 5.2.9 & NServiceBus.Host - バージョン 6.0.0
プラグ可能なアドインを使用してワークフロー アプリケーションを開発しています。
私のソリューションには、NServiceBus.Host.exe を使用してホストする NServiceBus ホスト アセンブリがあります。スキャンを防ぐために、NServiceBus.Host.exe.config で EndpointConfigurationType を定義しました。
この構成が使用されていることを確認しました。不明なタイプを入力するとエラーが発生し、スキャンが発生する前にEndpointConfig クラスがインスタンス化されるためです。
このクラスの Customize メソッドに追加しました
このプロジェクトを実行すると、エラーが発生します。これは、NServiceBus がすべてのアセンブリをスキャンしており、System.AddIn の性質上、一部のアセンブリをスキャンできないためです。
このスキャンは、Libra.Workflow.Host がインスタンス化された直後、Customize メソッドが呼び出される前に行われます。このスキャンのコール スタックは次のとおりです。
私が得るエラーメッセージは次のとおりです。
NServiceBus がこの DLL をスキャンする理由と、それを防ぐ方法を教えてください。
注:これは AddIn DLL であるため、Libra.Workflow.Host やその他の関連アセンブリには参照すらありません。そのため、NServiceBus がそれに触れなければならない理由はまったくありません。
nservicebus5 - autosubscribe と messagepoint マッピングの混在
目立たないモードを使用してコマンドとイベントを検索する一連のサービスが完成しました (メッセージではない可能性があります)。
接続に使用する webapi である既存のゲートウェイがあり、送信されたメッセージの種類に基づいて発行されMessageEndpointMappings
ます。インストール後のイベントのエントリがサブスクリプション テーブルに含まれることを期待していました。/install に含まれるパラメータ
ゲートウェイに新しいイベント タイプが送信され、発行呼び出しが行われますが、サービスによって取得されません。ゲートウェイは新しいタイプを認識していないため、公開できないと思います。をゲートウェイ構成に追加する必要がありますMessageEndpointMappings
か、それとも目立たないモードに変換する必要がありますか? とにかくマッピングには参照が必要になると思いますが、2つの方法に互換性があるかどうかはわかりません。
windows-8.1 - MSMQ HTTP 無効化エラー
特定の.netからダウンロードしたインストーラーからNServiceBusをインストールしようとしています
インストーラーは、MSMQ コンポーネントを無効にすることを望んでいます。MSMQ Http サポートを除くすべてのコンポーネントを無効にすることができます。このコンポーネントを無効にすると、エラー コード 0x800F0922 で失敗します。
DISM で無効にしようとすると、次のようなエラーがスローされます。
Dism ログは次のとおりです。
セーフ モードで無効にしようとしても、役に立ちませんでした。MSMQ を使用するすべてのサービスを削除しようとしても、役に立ちませんでした。
この問題を修正して NServiceBus をインストールする方法はありますか? グーグルが私の問題に似たものを表示していないからです。オペレーティング システムは Windows 8.1 です
nservicebus - NServiceBus - Saga Auditing - ハンドラが見つからないという例外
.Net 4.6.1 Windows サービス内でホストされている NServiceBus 5.2.14 を使用しています。AuditConfig を介してサービスに NServiceBus 監査を追加しました。
Sagas を含む Windows サービスの監査を有効にしたとき、いくつかの新しいサブスクリプションがサブスクリプション SQL テーブルに追加されていることに気付きました。次のように:
Saga サービスで監査を有効にした後、イベントを公開している (Saga がサブスクライブしている) サービスは、それ自体への再帰的なサブスクリプションを取得するようです。
メッセージが処理されると、コピーが正常に監査キューにプッシュされます。
ただし、私が抱えている問題は、メッセージのコピーがServiceThatIsPublishingEventTypeA.Errorキューにプッシュされ、ログに例外が発生することです。
例外は次のとおりです。
これは、ServiceThatIsPublishingEventTypeAサービス内にMyAssembly.MessageTypeAイベントのハンドラーがない(これらのイベントを発行するだけである) ため、理にかなっていますが、監査によってこのサブスクリプションが追加されています。
私の質問は次のとおりです。その再帰サブスクリプションは正しいですか? サガを介してトラフィックを監査する正しい方法は何ですか (エラーが発生するのを回避します)?
ご協力いただきありがとうございます
nservicebus - NServiceBus Timeoutsdispatcher キューがストレス テスト中にメッセージであふれている
2 つのタイムアウトを使用するサガでいくつかのストレス テストを行っています。テスト中に、約 21,000 のサガが作成されます。これは 42K のタイムアウトを意味しますが、MSMQ のストレージ制限に達したためにクラッシュするまで、サガの timeoutsdispatcher キューが数十万のメッセージであふれていることに気付きました。
永続化メカニズムを RavenDB から SQL Server に切り替えてから、この動作が見られます。
誰が何が間違っているのか考えていますか?
トランスポート: MSMQ
持続性: NHibernate 使用するパッケージ:
テストのセットアップ:
* エンドポイント 1 は 22000 のメッセージをエンドポイント 2 に送信しています。
* エンドポイント 2 は、そのメッセージによって開始されるサガをホストします。
* 各サガはイベントを発行し、2 つのタイムアウトを要求します。1 つは 4 分、もう 1 つは 10 分です。
観察された動作:
* エンドポイント 1 は 22K メッセージを 1 分以内に送信します。
* エンドポイント 2 (サガ) は、1 秒あたり 5 ~ 10 のメッセージを処理します。
* 4 分後に最初のタイムアウトが発生しますが、エンドポイント 2 はまだキューからのメッセージを処理しているため、新しい saga インスタンスを作成しています。
* その瞬間から、saga エンドポイントの timeoutsdispatcher キューがメッセージでいっぱいになります。
* 10 分ほど経過すると、timeoutsdispatcher キューにはすでに 170K を超えるメッセージが含まれており、まだいっぱいになっています。
* これは、MSMQ ストレージの制限に達するか、入力キューからのすべてのメッセージが処理されるためにエンドポイント 2 がクラッシュするまで続きます。後者が最初に発生した場合、timeoutsdispatcher キューのメッセージ数が減少し始め、最終的に 0 になります。
c# - 複数のメッセージの受信によって開始される NServiceBus Saga を設計する方法
2 つ以上のメッセージによって開始される NServiceBus 5.x の Saga の設計に関するヘルプを探しています。これは、サガが単一のメッセージで開始されるのではなく、サガが開始される前にすべてのメッセージが存在する必要があることを意味します。
それがどのように機能するのかよくわかりません。サンプルや例はどこにもありません。
私はいくつかのメッセージで物語が始まるのは全く問題ないと明言している本を何冊か読みました。
私が得られないのは、たとえば、サガを開始するために 3 つのメッセージが必要な場合に、サガがどのように見つかるかということです。サガが「開始」される前に、3 つのメッセージすべてが任意の順序で到着する必要があります。これは属性の選択にどのように影響しますか?[Unique]
例:「StoreID」、「ComputerID」、「UserID」の 3 つの ID によって「一意に」識別される saga が必要です。これら 3 つの ID は、3 つの異なるコマンド 、Message1
、Message2
で到着しますMessage3
。
MySagaData の 3 つのプロパティに [Unique] 属性を設定する必要がありますか?
または、これら 3 つを連結する読み取り専用プロパティを作成する必要がありますか?
到着するMessage1
とMessage3
、物語は開始できません。Message2
不足している。
それから別の人Message1
が到着します。
そしてMessage2
到着。(最初のサーガを完了し、開始できるようにします)
2番目はMessage1
どうですか?
これはどのように処理されますか?