1

私はサービスバス(特にNServiceBus)を初めて使用し、最初の佐賀を書いたばかりです。

佐賀は、トランザクションを受信し、メッセージを送信して、ユーザーID、支払いの詳細、製品の詳細などを、ほとんど閉じたシステム(プログラムでアクセスするのが難しい)に対して検証することを目的としています。現在、一部の機能は自動化とハンドラーの作成が簡単ですが、これらのタスクを実行するために使用できるAPIがないため、トランザクションを完了するために手動の介入が必要な場合がいくつかあります。これに対して複数のヒューマンエージェントが機能するため、同時実行性が問題になります。各ユーザーにオンデマンドで次のメッセージをプルさせて、MSMQに固有の同時実行性を利用してみませんか。

すべてがプッシュベースであるように見えるため、nhibernateのIBusで、次に利用可能なメッセージをオンデマンドで取得できるようにするメソッドを見つけることができませんでした。そこで、標準の.NET System.Messaging.MessageQueue APIを使用してMSMQからメッセージを手動で取得し、ユーザーがこれを操作して、IBusを介して応答を書き戻すことでサガにリターンを送信できるようにする、UIのプロトタイプを作成しました。 Send()メソッド。

これに関する私の主な質問は次のとおりです。これはNServiceBusに関する基本原則に違反しますか?そうでない場合は、NServiceBus APIを介してこれを行う方法はありますか?

また、MSMQまたはUIアプリケーションを介して同時実行を処理しますか?

乾杯

4

1 に答える 1

3

NSBのすべては、さまざまな理由から意図的に一方向になっています。クライアントに何かをする必要があることを通知するために、ビューモデルをポーリングして、一定の間隔で実行する必要がある作業があるかどうかを確認できます。佐賀は、UIが取得する適切な行を挿入/更新する責任があります。UIが完成したら、NSBを使用して佐賀にメッセージを送り返すことができます。これがWebUIの場合は、ダウンロードのAsyncPagesサンプルを確認してください。

これを行う別の方法は、メッセージングがクライアントと一緒にインストールされていると仮定して、クライアントにメッセージをプッシュすることです。バックグラウンドで何らかのメッセージポンプを作成する必要があります。繰り返しますが、作業が完了すると、単純なSend()で実行されます。

于 2011-06-15T12:35:25.993 に答える