2

サードパーティ アプリケーションとの統合に Rebus を使用したいと考えています。そのアプリケーションのデータベースにトリガーを追加して、トリガーがデータベースの変更に関する情報を含む Rebus メッセージの形式でレコードを挿入するようにします (操作の種類: 挿入、更新、削除、テーブル名、行 ID)。これを簡単に行う方法があるか教えてください。または、 https://github.com/rebus-org/Rebus/blob/master/src/Rebus/Transports/Sql/SqlServerMessageQueueを調べて、自分でストアド プロシージャを作成する必要があります。 .cs送信方法?

または、トリガーからのパラメーターを使用してexeを起動することもできますが、トランザクションではありません。

また、この問題https://github.com/rebus-org/Rebus/issues/119を見てきましたが、それは死んだと思います。

多分他の推奨されるアプローチがありますか?

更新: Rebus メッセージの本文がシリアル化されていることに気付いたので、SQL でそれを行うのは正気ではありません (SQL-CLR なしでは不可能です)。おそらく唯一の方法は、ReceiveMessage メソッドを使用してカスタム トランスポートを作成し、自分でメッセージを受け入れることです。フォーマット?

前もって感謝します :)

4

1 に答える 1

2

SQL Server Service Broker を直接 (つまり、Rebus トランスポートの実装として) ではなく、外部からポーリングできるメッセージ キューとして使用することで、"SQL Server で起こっていること" と統合することで優れた結果が得られました。

データベースで興味深いことが起こるたびに、トリガーがいくつかのテーブルにクエリを実行for xml autoし、サービス ブローカー キューに送信される XML メッセージに設定された結果を選択します。

System.Timers.Timer次に、ブローカ キューと受信した XML を文字列としてポーリングする Rebus エンドポイントを用意しましたbus.SendLocal。このようにして、XML の解析以降のすべてが、Rebus メッセージ、再試行、エラー キュー、および通常の信頼性に基づいて行われます。続きます:)

于 2014-10-21T19:55:36.543 に答える