最初の Saga を接続しようとしていますが、受信エンドポイントで開始メッセージを適切に処理することができませんでした。次の例外が発生します。
SagaMessageHandler メッセージの処理に失敗しました。Spring.Objects.Factory.UnsatisfiedDependencyException: 'NServiceBus.Sagas.Impl.SagaMessageHandler' という名前のオブジェクトの作成中にエラーが発生しました: オブジェクト プロパティ 'Persister' を介して表現された満たされていない依存関係: タイプ [NServiceBus.Saga.ISagaPersister] の 2 つのオブジェクトがタイプごとに自動配線されています、オブジェクト 'NServiceBus.Sagas.Impl.SagaMessageHandler' のプロパティ 'Persister' を自動配線できるようにするためには 1 つしかないはずでした。
インメモリ パーシスタと NHibernateSagaPersister の両方が競合していると推測していますが、これを解決する方法がわかりません。私の構成はこれです:
public class SubscriberEndpointConfig : IWantCustomInitialization, IConfigureThisEndpoint
{
public void Init()
{
_logger.Info("Subscriber is initializing..");
Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport().IsTransactional(true).IsolationLevel(IsolationLevel.ReadCommitted).PurgeOnStartup(false)
.UnicastBus().LoadMessageHandlers(First<GridInterceptingMessageHandler>.Then<SagaMessageHandler>())
.Sagas()
.NHibernateSagaPersister()
.Log4Net();
}
}
LoadMessageHandlers() を削除すると、エラーは消えますが、もちろん私のハンドラーは呼び出されません。ここで何が問題なのですか?カスタム初期化を行わずにプロダクション プロファイルで AsA_Server を使用している場合、サガは適切に動作しますが、他の理由でそれを使用する必要があります。