我已更新到NServiceBus 6,其中IProvideConfiguration<UnicastBusConfig>
及其MessageEndpointMappings
已過時。在NServiceBus 6中,端點是否可以在不知道發佈端點的情況下訂閱事件?
我遵循文檔中的發佈/訂閱說明。據我瞭解,現在需要在訂閱事件時明確命名發佈端點。
之前,我會具體事件接口,終點將是用戶的名稱:
config.MessageEndpointMappings.Add(
new MessageEndpointMapping
{
AssemblyName = MyAssemblyName,
TypeFullName = typeof(IMyEvent)),
Endpoint = "SubscribingEndpoint"
});
現在: 這個消失,我有以下幾點。這完全取代了一個IProvideConfiguration
類的需要:
var routing = endpointConfiguration.UseTransport<MsmqTransport>().Routing();
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.AuditProcessedMessagesTo("audit");
//register command
routing.RouteToEndpoint(typeof(MyCommand), "SomeEndpoint");
//subscribe to event
routing.RegisterPublisher(typeof(IMyEvent), "PublishingEndpoint"); //?
所以在這裏,我將不得不指定IMyEvent的發佈者,而不是用戶。 在NSB5中,這不是必需的。
那麼如果事件由多個端點發布,我該怎麼辦?
一個事件總是隻從一個端點發布(遵循該規則,只有一個發佈者......),並且AFAIK始終需要爲事件提供發佈者地址......您想要什麼做? –
@SeanFarmar我明白一個事件只應該由一個端點發布。在NSB5中,訂閱者將按照上面所示的方式進行訂閱,方法是在MessageEndpointMapping中使用自己的端點名稱,而不是發佈者的端點名稱。 v5文檔同樣多。這是一個比事件VS命令問題更多的配置問題問題。在這種情況下發送一個命令是可行的,除了爲它設置路由更多的工作。 – John
我很困惑,您能否提供鏈接,指出您可以使用端點的名稱而不是發佈者的端點名稱? AFAIK始終如此(有意義的是)訂閱者會向發佈者發送訂閱消息,因此它需要配置中的發佈者端點名稱... –