0

我正在使用 Nservicebus 4 的 RC2 和从以下位置下载的 PubSub 示例:http: //particular.net/articles/windows-azure-transport

我正在尝试进行基于代码的配置(而不是示例中显示的 azure csfg 文件)。这适用于早期版本的 NServiceBus,所以我不确定我在这里缺少什么。自定义配置未被拾取。这是一个错误吗?

这是我所做的应该重复问题的更改。

  1. 从 webrole 设置中删除了 nservicebus 配置
  2. 替换了自定义 IConfigurationSource 中的相同配置设置,并从总线引导代码中删除了 AzureConfigurationSource。

这是 Global.asax.cs 文件中更改后的引导代码:

  var bus = Configure.With()
                .DefaultBuilder()
                .CustomConfigurationSource(new CustomConfig())
                .MessageForwardingInCaseOfFault()
                .AzureMessageQueue()
                    .QueuePerInstance()
                .UnicastBus()
                .CreateBus()
            .Start();

这是 CustomConfig 类:

internal class CustomConfig : IConfigurationSource
{
    public T GetConfiguration<T>() where T : class, new()
    {
        // the part you are overriding
        if (typeof(T) == typeof(AzureQueueConfig))
            return new AzureQueueConfig { ConnectionString = "storage key here", QueueName = "orderwebsiteinputqueue" } as T;

        if (typeof(T) == typeof(MessageForwardingInCaseOfFaultConfig))
            return new MessageForwardingInCaseOfFaultConfig { ErrorQueue = "errorqueue"} as T;

        if (typeof(T) == typeof(TransportConfig))
            return new TransportConfig() { MaxRetries = 5, MaximumConcurrencyLevel = 1} as T;

        // leaving the rest of the configuration as is:
        return ConfigurationManager.GetSection(typeof(T).Name) as T;
    }
}
4

1 回答 1

1

推荐的自定义配置方式是实现IProvideConfiguration而不是替换配置源,你可以试试吗?

亲切的问候,伊夫

于 2013-07-08T05:53:06.480 回答