NServiceBus在Pub / Sub示例中持久订阅

时间:2010-02-06 09:42:37

标签: nservicebus

我想弄明白如何设置NServiceBus中的Pub / Sub样本,以便在发布者出现故障的情况下工作。 当我启动示例并意外关闭订阅者时,如果我重新启动一切正常。 但是,如果我杀了发布者并且订阅继续有效,如果我重新启动发布者,那么它似乎不知道它有订阅者并且不发布任何消息。

我添加了配置条目    < MsmqSubscriptionStorageConfig Queue =“subscriptions”/> 但似乎没有功能...我想念一些东西。我用Google搜索了MsmqSubscriptionStorageConfig和DbSubscriptionStorageConfig,但我找不到解决方案。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

我发现需要几个额外的步骤才能使用SQLite订阅存储系统在.Net 4.0下使用Pub / Sub示例。

将以前的建议与新建议相结合,以下是必需的更改,所有这些更改都适用于MyPublisher项目。


  • 添加对System.Data.SQLite的引用。请务必选择与所需架构匹配的版本(x86 / x64)。这些项目可以在“二进制文件”文件夹中找到。

  • App.config文件中,将以下内容添加为新的configSection元素:

    <section name="DBSubscriptionStorageConfig" 
    type="NServiceBus.Config.DBSubscriptionStorageConfig, NServiceBus.Core" />
    
  • App.config文件中添加以下内容作为新配置元素:

    <DBSubscriptionStorageConfig>
        <NHibernateProperties>
            <add Key="connection.provider" 
                Value="NHibernate.Connection.DriverConnectionProvider"/>
            <add Key="connection.driver_class"
                Value="NHibernate.Driver.SQLite20Driver"/>
            <add Key="connection.connection_string"
                Value="Data Source=.\Subscriptions.sqlite;Version=3;New=True;"/>
            <add Key="dialect"
                Value="NHibernate.Dialect.SQLiteDialect"/>
        </NHibernateProperties>
    </DBSubscriptionStorageConfig>
    
  • 将此块XML添加到NServiceBus.Host.exe.config文件的配置部分:

    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
    

答案 1 :(得分:3)

您需要将发布商的个人资料更改为生产。 见http://docs.particular.net/nservicebus/hosting/nservicebus-host/profiles

要以这种方式进行调试,请转到发布者项目的属性,进入“调试”选项卡,然后将“NServiceBus.Production”放入“开始选项”部分的命令行参数中。