問題タブ [nservicebus-sagas]
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 - RavenDB.SagaPersister.Save の例外、「Guid には 4 つのダッシュを含む 32 桁を含める必要があります」。Raven で GUID が空です
NServiceBus 5.1、RavenDB 永続性、AutoFac コンテナー、log4net、投稿時の NuGet のすべての最新バージョン。
エンドポイント構成:
- Bus.Send() を使用した NServiceBus スケジュール
- ACommand は Saga 2a を開始します。ACommand が処理され、ハンドラ内で RequestTimeout(InvoiceCreationTimeout) が呼び出されます
- ACommand ハンドラは問題なく返されるようです。
- ACommand ハンドラーでのコードの後で、ログに FormatException が記録されます。
データベースを確認しましたが、保存されているサガはなく、TimeoutDatas のみです。
編集 ログ出力(現在、SagaId が ACommand のハンドラーにログインしています (実際の名前は OrderInvoiceCommand) :
nservicebus - 2 つの RavenDB IDocumentStores で NServiceBus を構成する方法は?
NSB 5 で、NSB データ用の 1 つの IDocumentStore とアプリケーション データ用の別の IDocumentStore を持つ autofac コンテナーで NSB を正しく構成するにはどうすればよいですか? EndpointConfig の関連部分を以下に貼り付けました。
別の質問でサガの保存に問題があったため、これが機能していないことはわかっています。SagaPersister は appDataStore で saga を永続化しようとしましたが、タイムアウト メッセージは nsbDataStore で永続化されました。
azure - NServiceBus AzureSagaPersistence スキーマの問題
DateTime プロパティをもう 1 つ追加して saga データ クラスを更新しましたが、すべてがうまくいきませんでした。スキーマは更新されず、各サガ メッセージで例外が発生し始めましたが、そこには重要なデータがなかったので、テーブルを削除しました。
それ以来、saga データ テーブルは次のように作成されています。
Saga データ クラスのフィールドはスキーマに存在しません。
ここに私のサガデータクラスがあります:
何が問題なのですか?サガ データ テーブルを削除する前は、まったく問題ありませんでした。
更新: データ クラスから 2 番目の DateTime フィールドを削除し、テーブルを再度削除すると、機能し始めました。これはなぜですか?
nservicebus - NServiceBus サガ Unique 属性
Unique 属性でマークされた 1 つのプロパティを持つ saga データ クラスがあります。ただし、これは、NServiceBus がこのフィールドに同一の値を持つ複数のサガを作成することを妨げませんでした。
ここに私のデータクラスがあります:
マッピングは次のとおりです。
データが値を取得する方法は次のとおりです。
そして、ここに、saga 永続化テーブル (Azure テーブル ストレージ) に表示されるものを示します。
このように機能すると思われますか、それとも何か不足している可能性がありますか?
c# - Saga Wait for Status 値
特定の Database-Value が変更されるのを待つべき Saga があります。どうすればこれを達成できますか?
例:
そのOrderのbool「承認済み」がtrueの時にメールを送りたい。ただし、これには数時間または数日かかる場合があります。Saga に数時間後に再度確認するように指示するにはどうすればよいですか? 私は Sagas と NServiceBus を初めて使用するので、答えは簡単かもしれませんが、見つけられませんでした。
nservicebus - ダイナミック サガを名前で呼び出すことはできますか?
名前で一意に識別される製品のリストがあります。各製品には独自の注文プロセスがあります。各製品の注文プロセスをサガで定義したいと思います。異なるサガを使用して各製品を処理する方法はありますか? これにエンドポイントを使用できますか? bus.Send(商品名、メッセージ)は動作しますか?
これが理にかなっていることを願っています。
nservicebus - コールバックに応答データが表示されないのはなぜですか?
販売プロセスを書き直すために、会社で nservicebus を評価しています。サガと Web API を使用します。クライアント側で応答を処理するブロックに遭遇しました。ガイダンス として、クライアント側での応答の処理を使用しています。
クライアントコントローラーから、次のコードがあります。
サガのハンドラーから、次のコードが得られます。
localResult.Messages が null です。私は何を間違っていますか?
transactions - 佐賀県内での補償について
私は nservice バスが初めてで、概念を学ぼうとしています。
顧客から支払いを受けた後に顧客を登録するアプリケーションを作成しようとしています。登録プロセスには、支払いやExternalXYZなどのサードパーティ統合がいくつかあります
私は以下の手順を行うことを考えています
- MVC コントローラーから WebAPI レイヤーを呼び出します。これにより、BeginRegistrationProcess などの NService バスを使用して顧客を登録するためのコマンドが送信されます。
- BeginRegistrationProcess は相関 ID を生成し、DB エントリを作成し、ProcessRegistration などの別のコマンドを使用して Saga を開始します。
ProcessRegistration は次のことを行います
- Db エントリを作成する
- 支払いサービスの呼び出し (DoPayment コマンドを使用 - これには、DB エントリの作成、呼び出しの作成、応答の処理などの手順が含まれます)
- ExternalXYZ Web サービスを呼び出します (DoPayment と同様の手順で CallExternalXYZ コマンドを使用)。
これら 2 つのサービス呼び出しに対して 2 つの別個のコマンドを作成して、それらが独自の小さなトランザクション スコープ内に収まるようにすることを考えています。これらのコマンドは、サービス呼び出しの前後に詳細を記録します。(これは、サービス呼び出しが失敗し、再試行する必要がある場合の補償ロジックに役立つ場合があります)
ここに私の質問があります
- これは良いアプローチに聞こえますか?
- エラーシナリオをどのように処理しますか。たとえば、ステップ 3 の DB エントリが完了し、支払い中にタイムアウトが発生したとします (カードが引き落とされ、返信の投稿中にタイムアウトが発生したか、ネットワーク タイムアウトである可能性があります)。カードが二重に引き落とされないようにするにはどうすればよいですか。
- DoPayment ハンドラでエラーが発生した場合、nservicebus は ProcessRegistration サガ内のトランザクションをロールバックします
- エラーが発生した場合、サービスを呼び出す前に DoPayment から行う DB 呼び出しはどうなりますか。
サガで補償を処理する方法を示すサンプルはありますか? ProcessRegistration によって開始できる補正サガを作成したいと考えています。ログ テーブル (このテーブルには前後の各サービス コールの記録があります) を使用して補正を開始できますか?