我有:
- 一个带有 QUEUE0 的订阅者 SUB - 带有 QUEUE1 的
发布者 PUB1 - 带有 QUEUE2的
发布者 PUB2 -两个发布者都发布了
事件MyEvent
何时:
- SUB 仅使用队列名称 QUEUE1 显式订阅 PUB1
subscriberEndpointConfiguration.UnicastRouting().AddPublisher("PUB1", typeof(MyEvent));
结果:
- SUB 也接收MyEvent
来自 PUB2(队列名称为 QUEUE2)
预期:
- SUB 不应该MyEvent
从 PUB2 接收,因为它没有订阅该发布者队列名称
来自 NSB 维基:
订阅者表示对一个或多个类感兴趣,并且只接收感兴趣的消息,而不知道有哪些发布者(如果有的话)
问题:
在上面显示的方法中指定发布者端点有什么意义
AddPublisher
?Azure 表存储中的订阅表只有一个事件类型和一个订阅者列,不存储发布者端点。如果
AddPublisher
是某种过时的方法,那么endpointInstance.Subscribe<MyEvent>()
简单地失败 - 它说“找不到发布者”。是否可以对发布者进行范围/分组,以便只有一种事件类型
MyEvent
,订阅者将接收来自仅使用相同队列名称创建的发布者的事件?
例如,您使用 QUEUE-A 创建 PUB1,使用队列 QUEUE-A 创建 PUB2,使用 QUEUE-B 创建 PUB3,使用 QUEUE-A 创建 SUBAddPublisher
,因此 SUB 不会MyEvent
从 PUB3 (QUEUE-B) 接收。
我正在使用:
NServiceBus 6.0.0-beta0004
NServiceBus.Persistence.AzureStorage 1.0.0-beta0004
NServiceBus.Azure.Transports.WindowsAzureStorageQueues 7.0.0-beta0004