当前位置: 首页 > 知识库问答 >
问题:

本地NServicebus发布到Azure队列

宋腾
2023-03-14

我们有一个使用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.



我有点不知所措,我尝试了在网上找到的几种不同的示例,但我觉得我对azure知识的缺乏阻碍了我的发展。我从这个问题中提取了大部分配置:使用azure队列的nservicebus本地主机是否有我缺少的一些魔力?

共有3个答案

华甫
2023-03-14

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

景明诚
2023-03-14

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

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

诸葛文博
2023-03-14

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

 类似资料:
  • 我目前正努力在nServiceBus托管的应用程序上启动并运行一些东西。我有一个第三方正在向其发布消息的azure ServiceBus队列,我希望我的应用程序(目前在本地托管)接收这些消息。 我在谷歌上搜索了如何配置endpoint的答案,但我在有效的配置中没有运气。有人这样做过吗,因为我可以找到如何连接到Azure存储队列但不是服务总线队列的示例。(由于其他原因,我需要Azure servic

  • 我正在尝试在Azure中设置NServiceBus。在本地开发期间,我使用存储队列,在部署到云中时,我使用Azure服务总线。由于某些原因,当发生错误时,消息不会移动到错误队列。事实上,甚至没有创建错误队列。 在我的网上。配置文件I具有以下配置: 配置NServiceBus时,我调用: 当消息失败时,日志中的最后一个错误总是 对此有什么想法吗?消息传递似乎起作用了,只是错误处理不起作用。

  • 我想知道,如果可能的话,客户端应用程序(wint)如何发送NServicebus命令A由MSMQ队列处理,命令B由Azure存储队列或Azure服务总线处理?如果没有,我怎样才能避开它?

  • 我的NServiceBus项目将不再读取Azure队列。 我删除了它们,以为可能有一些消息被卡住了,但现在它将不再创建队列。注意:完全相同的代码和凭证用于自动创建队列。相反,我得到的是: 40400:未找到终结点。。 在微软。ServiceBus.消息传递。sbmp。SbmpMessageSender.微软的EndSend命令(IAsyncResult结果)。ServiceBus.消息传递。sbm

  • 似乎所有附带nServicebus的示例项目都设置为发送者和宿主是Web角色和辅助角色(并通过角色切入点托管)。 我需要这样做: Web角色发送消息- 是否可以将本地主机配置为仅使用Azure队列存储(而不是MSMQ)? 我似乎在任何地方都找不到一个记录在案的例子。

  • 我使用VS 2013中QueueWorkerRole的模板创建了一个新的WorkerRole,它创建的代码如下所示: 我遇到的问题是正确设置Microsoft.ServiceBus.ConnectionString,以便它可以与我在模拟器中运行的本地开发队列一起工作。默认情况下,它像这样设置: 我想,当我有一个托管服务可以连接时,这将很好地工作,但我只是在本地尝试一些东西,无法让它连接。 我已经尝