是否可以使用NServiceBus和Azure WITHOUT Azure模拟器?

时间:2013-10-23 13:07:09

标签: c# asp.net-mvc azure nservicebus

我使用此代码:

        bus = bus ?? Configure.With()
            .DefaultBuilder()
            .AzureDiagnosticsLogger()
            .UseTransport<AzureStorageQueue>()
            .PurgeOnStartup(true)
            .UnicastBus()
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install());

模拟器设置为: ServiceConfiguration azure文件包含以下设置:

  <Setting name="AzureQueueConfig.ConnectionString" value="UseDevelopmentStorage=true" />
  <Setting name="AzureQueueConfig.QueueName" value="webinputqueue" />
  <Setting name="MessageForwardingInCaseOfFaultConfig.ErrorQueue" value="errorqueue" />
  <Setting name="TransportConfig.MaximumConcurrencyLevel" value="1" />
  <Setting name="TransportConfig.MaxRetries" value="5" />

它完美无缺,但它只适用于模拟器。每个人都知道模拟器是如何缓慢的。所以我试图找到一种方法来运行这个NServiceBus与天蓝色队列,但没有amulator。我尝试将上面的设置添加到web.config但它没有帮助并显示错误:

Not running in a hosted service or the Development Fabric.

1 个答案:

答案 0 :(得分:1)

是的,完全可以在模拟器之外运行。

只需添加正确的配置部分

即可
<configSections>
     <section name="AzureQueueConfig" type="NServiceBus.Config.AzureQueueConfig, NServiceBus.Azure" />
     <section name="TransportConfig" type="NServiceBus.Config.TransportConfig, NServiceBus.Core" />
      <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<configSections>

并将配置设置放在相应的配置节点

<AzureQueueConfig ConnectionString="UseDevelopmentStorage=true" QueueName="webinputqueue" />
<MessageForwardingInCaseOfFaultConfig ErrorQueue="errorqueue" />
<TransportConfig MaximumConcurrencyLevel="1" MaxRetries="5" />

除了AzureDiagnosticsLogger之外,应该这样做......最好用另一个记录器替换它,因为在角色环境之外,诊断服务是不可用的