4

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

我添加了配置条目 <MsmqSubscriptionStorageConfig Queue="subscriptions"/> 但它似乎不起作用......我错过了一些东西。我搜索了有关 MsmqSubscriptionStorageConfig 和 DbSubscriptionStorageConfig 的信息,但没有找到解决方案。

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

4

2 回答 2

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>
    
于 2011-04-02T18:07:51.133 回答
3

您需要将发布者的配置文件更改为生产。请参阅http://docs.particular.net/nservicebus/hosting/nservicebus-host/profiles

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

于 2010-02-06T11:18:20.913 回答