1

NServiceBus から SQL Server Service Broker への移行を検討しています。

私が見逃しているのは、「Raise Event」セクションです。メッセージが NServiceBus に到着すると、コードでイベントが発生します。これはうまくいきました。

SQL Server Message Broker の場合、これを行うには次の 2 つの方法が考えられます。

  • CLR sproc を作成して、SQL Server に WCF サービスを呼び出させる
  • WCF サービスでデータベースを継続的にポーリングして、新しいメッセージがあるかどうかを確認します。
    • これにより、WCF でタイムアウトの問題が発生する可能性があります。

他のアプリ (Service Broker アプリではない) で 2 番目のオプションを試しましたが、うまくいきませんでした。

私は最初のものが一番好きですが、私には非常に型にはまらないようです.

コーディングを始める前に、ここで全体像を見逃していないかどうか尋ねてみようと思いました。他のアプリは SQL Server Service Broker でこれをどのように行うのですか?

注: 現在、NServiceBus ソリューションで 1 日あたり約 1/2 百万のメッセージを処理しています。そのようなスループットに対処できるほど堅牢なソリューションが必要です。

4

3 に答える 3

1

Service Broker External Activatorはどうですか? 試してみたい場合のアプローチは...、

  1. EXE、コンソール、またはWindowsを作成しますが、コマンドラインを有効にすることをお勧めします。
  2. 実際のメッセージ キューを作成し、外部アクティベーション キューがメッセージでいっぱいになるとすぐにメッセージをプッシュします。 別のキューを作成する理由は、Microsoft から提供されたソリューションでは、コマンド ラインを使用して他のアプリケーションにメッセージを渡すことができないためです。MS からソース コードを取得すると、優れた機能強化と完全なソリューションになります。

それはどのように機能しますか...?

  1. Windows サービスは、外部アクティベーション キューを継続的にポーリングしています。1 つのメッセージを受信すると、[サービス構成で指定された] EXE が実行されます。
  2. メッセージはすぐに外部アクティベーション キューから削除され、実行されたアプリケーションは WCF サービスを呼び出します。
  3. WCF サービスは、キューに入れられた実際のメッセージを読み取り、そのプロセスを開始します。
  4. WCF呼び出しを非同期にして、イニシエーターexeが長く続かないようにする[非同期が必要かどうかを選択]

注 :外部アクティベーション Windows サービスの設定には注意が必要です。

Service Bus がなければ、これが唯一の効果的なソリューションであり、私たちはそれを使用しました。

于 2013-09-03T04:53:10.960 に答える