【发布时间】:2017-06-16 17:05:57
【问题描述】:
我已更新到 NServiceBus 6,其中 IProvideConfiguration<UnicastBusConfig> 及其 MessageEndpointMappings 已过时。
我已按照文档中的发布/订阅说明进行操作。据我了解,现在需要在订阅事件时显式命名发布端点。
之前,我可以指定事件接口,端点是订阅者的名称:
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 命令问题。在这种情况下发送命令会起作用,只是为它设置路由需要做更多的工作。
-
我很困惑,您能否提供说明您可以使用端点名称而不是发布者端点名称的链接? AFAIK 订阅者总是会向发布者发送订阅消息(这是有道理的),因此它需要配置中发布者的端点名称......
标签: c# nservicebus publish-subscribe