1

VideoStore.NHibernateMSMQ ではなくNServiceBus サンプル ( Githubから) を動作させようとしています ( SqlServerTransportMSMQ にも RavenDb にも依存したくありません)。

次のようにして、このサンプルを MsmqTransport ではなく SqlServerTransport を使用するように切り替えました。

  • NserviceBus.SqlServer に適切な NuGet パッケージを追加する
  • 各 app/web.config に適切な接続文字列を追加する

これらの新しい設定でサンプルを実行すると、NServiceBus.ExtensionMethods 静的クラスに、 SqlServerTransport に切り替えたときにSetMessageHeaderスローされるメソッドが呼び出されていることがわかります。InvalidOperationException

public static void SetMessageHeader(this ISendOnlyBus bus, object msg, string key, string value)
{
    IManageMessageHeaders manageMessageHeaders = bus as IManageMessageHeaders;
    if (manageMessageHeaders == null)
        throw new InvalidOperationException("bus does not implement IManageMessageHeaders");
    manageMessageHeaders.SetHeaderAction(msg, key, value);
}

SqlServerTransportメッセージヘッダーをサポートしていないということですか?

私たちの決定に関連して、SQL Server トランスポートでサポートされていないものは他にありますか?

利用可能な機能/トランスポート マトリックスはありますか?

アップデート:

わかりました、多分私はここで銃を飛ばしました。https://github.com/Particular/NServiceBus.SqlServer.Samplesは、SqlServerTransport がメッセージ ヘッダーと Sagas をサポートしていることを示唆しているようです。

アップデートⅡ

永続性 (NHibernatePeristence) とトランスポート (SqlServerTransport) の両方に同じデータベースを使用すると問題が発生するようです。役割ごとに別々のデータベースを使用することで、問題が解決したようです。

機能のサポートに関して、SqlServerTransport を使用することに何らかの欠点があるかどうかを知りたいですか?

4

1 に答える 1

1

MSMQ と比較して、SQLServer トランスポートを使用する場合、機能の低下はありません。NHibenrnate 永続性との統合は正常に機能しますが、「DistributedTransactions」を有効にする必要があります (デフォルト)。トランスポートとパーシスタンスの両方の接続文字列が同じ場合、実際にはDTC にエスカレートされない (パフォーマンス ヒットなし)ことに注意してください。

于 2015-02-10T04:51:22.463 に答える