我已经基于NServiceBus软件包(3.2.8)中的AzureServiceBusFullDuplex样本实现了一个小样本项目,但差别很小 - 我在云中有监听器,内部有发送器。它运行正常,直到我运行两个本地端点。当我这样做并且第二个enapoint发送消息时,第一个端点收到回复。当我启动第三个端点并发送消息时,第二个端点会收到回复。
逻辑上我理解会发生什么,每个端点都订阅了回复消息合同,最新注册的端点收到了该类型的所有消息。但是当我有多个同一消息类型的发件人而云中只有一个处理程序时,我怎么能实现我的场景呢?它类似于本机Azure Service Bus队列中的会话支持。
答案 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中,我发现它使用端点名称作为队列名称,如果没有配置队列名称,则使用来自前面的配置调用的端点名称。