带有Azure Service Bus的NServiceBus,全双工和多个发件人

时间:2012-10-25 11:41:46

标签: azure nservicebus

我已经基于NServiceBus软件包(3.2.8)中的AzureServiceBusFullDuplex样本实现了一个小样本项目,但差别很小 - 我在云中有监听器,内部有发送器。它运行正常,直到我运行两个本地端点。当我这样做并且第二个enapoint发送消息时,第一个端点收到回复。当我启动第三个端点并发送消息时,第二个端点会收到回复。

逻辑上我理解会发生什么,每个端点都订阅了回复消息合同,最新注册的端点收到了该类型的所有消息。但是当我有多个同一消息类型的发件人而云中只有一个处理程序时,我怎么能实现我的场景呢?它类似于本机Azure Service Bus队列中的会话支持。

2 个答案:

答案 0 :(得分:2)

阿列克谢,

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

亲切的问候, 伊夫

答案 1 :(得分:1)

所以我用完了我的原型
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中,我发现它使用端点名称作为队列名称,如果没有配置队列名称,则使用来自前面的配置调用的端点名称。