SQL Server TransportとSQL Persistenceを使用してNServiceBusホストアプリケーションを実行しようとしています。私は両方のトランスポートと永続性の接続文字列を同じデータベースに指しても問題ありません。しかし、私はこの例外を投げ、その最初のメッセージを受信すると、データベース、プログラムがクラッシュを分離するためにそれらをポイントすると:NServiceBus SQL Server転送とSQL永続性が異なるデータベース
var persistenceConnection = @"Data Source=.\SqlExpress;Database=MyServicePersistence;Integrated Security=True;Max Pool Size=100;";
var transportConnection = @"Data Source=.\SqlExpress;Database=MyServiceTransport;Integrated Security=True;Max Pool Size=100;";
var endpointConfiguration = new EndpointConfiguration("MyService");
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.AuditProcessedMessagesTo("audit");
endpointConfiguration.EnableInstallers();
var transport = endpointConfiguration.UseTransport<SqlServerTransport>();
transport.ConnectionString(transportConnection);
transport.UseSchemaForQueue("error", "dbo");
transport.UseSchemaForQueue("audit", "dbo");
transport.Transactions(TransportTransactionMode.SendsAtomicWithReceive);
var persistence = endpointConfiguration.UsePersistence<SqlPersistence>();
persistence.SqlVariant(SqlVariant.MsSqlServer);
persistence.ConnectionBuilder(() => new SqlConnection(persistenceConnection));
persistence.Schema("persistence");
var subscriptions = persistence.SubscriptionSettings();
subscriptions.CacheFor(TimeSpan.FromMinutes(1));
潜在的に注目に値する:私は例外を防ぐことができますSystem.Data.SqlClient.SqlException (0x80131904): Invalid object name 'persistence.MyService_MySaga'.
ここ
は私のエンドポイント構成がありますTransportTransactionMode
をSendsAtomicWithReceive
からNone
に変更するとスローされません。しかし、すべての失敗したメッセージがすべての再試行を迂回してエラーキューに直接送られるため、私はそれをしたくありません。
実際に、私たちのチームの誰かが、この問題について、スペシャル(サイモン私は信じていますか?)の誰かとすでに接触していることを知りました。緊急の場合は、回避策があるので緊急のことではありません。しかし、私たちの状況では回避策は必ずしも望ましくありません。 – RobotJones
私は理解しています、私はあなたを更新していきます! – wlabaj