【问题标题】:NServiceBus with Azure Service Bus, full duplex and multiple sendersNServiceBus 与 Azure 服务总线、全双工和多个发件人
【发布时间】:2012-10-25 11:41:45
【问题描述】:

我已经实现了一个基于 NServiceBus 包 (3.2.8) 中的 AzureServiceBusFullDuplex 示例的小型示例项目,但差别很小 - 我在云中拥有侦听器,在本地拥有发送者。在我运行两个本地端点之前,它可以正常工作。当我这样做并且第二个 enapoint 发送消息时,第一个端点会收到回复。当我启动第三个端点并发送消息时,第二个端点会收到回复。

从逻辑上讲,我理解会发生什么,每个端点都订阅了回复消息合约,并且最新注册的端点收到了该类型的所有消息。但是,当我有多个相同消息类型的发送者并且在云中只有一个处理程序时,我该如何实现我的场景呢?它类似于原生 Azure 服务总线队列中的会话支持。

【问题讨论】:

    标签: azure nservicebus


    【解决方案1】:

    阿列克谢,

    听起来本地端点配置了相同的输入队列,第一个接收回复的人得到它,你能验证这一点并确保它们都在不同的队列上监听吗?

    亲切的问候, 伊夫

    【讨论】:

    • 是的,实际上我几个小时前刚刚完成了 POC,将端点拆分到不同的队列。我实际上开始在 app.config 中手动拆分,这很有效,我查看了配置部分代码并尝试了 QueuePerInstance,但它只有在同一台机器上运行多个实例时才有效,所以我只是在配置中将队列名称留空,然后使用 DefineEndPointName("unique name") 并且有效:)
    【解决方案2】:

    所以我完成了我的原型使用
    1) AzureServiceBusQueueConfig 中未指定队列名称
    2) 在代码中指定队列名称

                    _configure = Configure.With()
               .DefaultBuilder()
               .Log4Net(new log4net.Appender.ColoredConsoleAppender())
               .JsonSerializer()
               .DefineEndpointName(queueName)
               .AzureServiceBusMessageQueue()
               .IsTransactional(false)
               .MessageForwardingInCaseOfFault()
               .UseInMemoryTimeoutPersister()
               .DisableSecondLevelRetries()
               .InMemorySubscriptionStorage()
               .UnicastBus()
                   .DoNotAutoSubscribe()
                   .LoadMessageHandlers()
               .CreateBus();
    

    在 AzureServiceBusQueueConfig.cs 中我发现它使用端点名称作为队列名称,如果没有配置队列名称,则使用来自前面配置调用的端点名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2017-06-05
      • 2022-10-21
      相关资源
      最近更新 更多