1

最初の 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 を使用している場合、サガは適切に動作しますが、他の理由でそれを使用する必要があります。

4

1 に答える 1

1

nservicebus プロファイルが永続化を構成しています (http://www.nservicebus.com/Profiles.aspx)

NServiceBus.Lite (デフォルト) = インメモリ

NServiceBus.Integration = NHibernate + Sqlite

NServiceBus.Production = NHibernate

したがって、あなたの場合、NHibernateSagaPersister() への呼び出しを削除して、プロファイルに機能させることができます。

于 2011-07-08T21:33:04.603 に答える