是否可以在没有 Azure 模拟器的情况下使用 NServiceBus 和 Azure U

本文关键字:Azure 情况下 NServiceBus 模拟器 是否 | 更新日期: 2023-09-27 18:36:29

我使用以下代码:

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

模拟器设置包括:服务配置 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" />

它运行完美,但它仅适用于模拟器。每个人都知道模拟器有多慢。所以我正在尝试找到一种方法来使用 azure 队列运行此 NServiceBus,但没有模拟器。我尝试将上述设置添加到 web.config 中,但它没有帮助并显示错误:

Not running in a hosted service or the Development Fabric.

是否可以在没有 Azure 模拟器的情况下使用 NServiceBus 和 Azure U

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

只需添加正确的配置部分

<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...最好将其替换为另一个记录器,因为诊断服务在角色环境之外显然不可用

相关文章: