2

我们有一个使用 NServicebus 的本地 Web 应用程序,我们希望将队列移动到 azure(作为完全基于云的更大迁移路径的一部分)。我正在尝试建立 POC,但似乎无法使其正常工作。


我有以下配置:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
     <section name="AzureQueueConfig" type="NServiceBus.Config.AzureQueueConfig, NServiceBus.Azure"/>
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core"/>
</configSections>

<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<AzureQueueConfig QueueName="timeoutmanager" 
                ConnectionString="DefaultEndpointsProtocol=https;AccountName=<My storage account>;AccountKey=<My primary access key>"/>

<UnicastBusConfig TimeoutManagerAddress="timeoutmanager">
<MessageEndpointMappings>
  <add Messages="TechFu.Services.Bus.Messages.Publishing.CMS.SitePagePublishMessage, TechFu.Services.Bus.Messages" Endpoint="sitepagepublish" />
</MessageEndpointMappings>


在我的应用程序中,我将总线配置为:

Configure.WithWeb()
.StructureMapBuilder()
.InMemorySubscriptionStorage()
       .AzureMessageQueue()
        .JsonSerializer()
.UnicastBus()
        .LoadMessageHandlers()
              .IsTransactional(true)
.CreateBus()
       .Start();


当我尝试发布到队列时,我收到以下消息:

The destination queue 'sitepagepublish@ DefaultEndpointsProtocol=https;AccountName=&lt;My storage account&gt;;AccountKey=&lt;My primary access key&gt;’ could not be found. You may have misconfigured the destination for this kind of message (TechFu.Services.Bus.Messages.Publishing.CMS.SitePagePublishMessage) in the MessageEndpointMappings of the UnicastBusConfig section in your configuration file. It may also be the case that the given queue just hasn't been created yet, or has been deleted.



我有点不知所措,我尝试了我在网上找到的几个不同的样本,但我觉得我缺乏天蓝色的知识正在妨碍我。我从这个问题中提取了大部分配置:nservicebus on-premise host using azure Queue 难道我缺少一些魔法?

4

4 回答 4

2

目标队列是否存在?NServiceBus 默认只创建源队列,因此如果目标不存在,它不会为您创建它。

于 2012-05-02T15:53:01.663 回答
2

我认为这不会起作用,因为订阅消息无法在两个主机之间交换。

更好地使用 NServiceBus 的网关概念,它将跨不同站点分发消息。

于 2012-05-31T10:57:31.230 回答
0

您可以尝试从配置文件中删除对MsmqTransportConfig的任何引用吗?(使用 Azure 队列时,您实际上是在替换 MSMQ 传输)

于 2012-04-29T20:21:30.053 回答
0

我不熟悉 NServicebus。但是 Windows Azure 有一个内置的 Service Bus,它可以自然地与队列集成。您可以参考http://msdn.microsoft.com/en-us/WAZPlatformTrainingCourse_ServiceBusMessaging获取教程。

最好的祝福,

明旭。

于 2012-04-30T06:40:06.283 回答