nservicebus3:SagaPersister没有当前会议

时间:2012-01-17 08:27:19

标签: nservicebus

我们正在申请中引入nservicebus 3和saga支持。我们已经按如下方式配置了nhibernate saga persister:

  <NHibernateSagaPersisterConfig>
    <NHibernateProperties>
      <add Key="connection.provider" Value="NHibernate.Connection.DriverConnectionProvider"/>
      <add Key="connection.driver_class" Value="NHibernate.Driver.SqlClientDriver"/>
      <add Key="dialect" Value="NHibernate.Dialect.MsSql2008Dialect"/>
      <add Key="connection.connection_string_name" Value="TeamGameServiceDB"/>      
    </NHibernateProperties>
  </NHibernateSagaPersisterConfig>

    public void InitializeServiceBus(IWindsorContainer container)
    {
        SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure);

        Configure.With()
            .DefiningMessagesAs(t => t.ImplementsTheInterface(typeof (IMessage)))
            .Log4Net()
            .CastleWindsorBuilder(container)
            .XmlSerializer()
            .MsmqTransport()
            .IsolationLevel(System.Transactions.IsolationLevel.RepeatableRead)
            .UnicastBus()
            .Sagas()
            .NHibernateSagaPersister();
    }

当传奇即将被持久化时,我得到一个例外,说“没有会话被绑定到当前的上下文”。我浏览了nservicebus.nhibernate项目,我无法弄清楚谁负责设置SagaPersistor使用的当前会话(saga persistor使用ISessionFactory.GetCurrentSession())。由nhibernate saga persister配置的会话工厂设置为使用“NHibernate.Context.ThreadStaticSessionContext”,这意味着nservicebus堆栈中的某些东西应该分配它。任何人都可以帮助我阐明如何分配ISessionFactory.GetCurrentSession()吗?即将保留的传奇是从公共汽车发起的。发送本地消息。

1 个答案:

答案 0 :(得分:2)