我有一个控制台应用程序,它使用NServiceBus将消息发布到Azure主题。但是,NServiceBus创建一个具有不同名称的新主题,而不是我指定的名称。这是为什么?
更多详情
我的消息配置如下所示。这意味着类型'TheResponse'的消息应该转到名为“test1”的主题,对吧?
<UnicastBusConfig>
<MessageEndpointMappings>
<add Assembly="Messages" Type="Messages.TheResponse" Endpoint="test1"/>
</MessageEndpointMappings>
</UnicastBusConfig>
<connectionStrings>
<add name="NServiceBus/Transport"
connectionString="Endpoint=sb://[my-namespace].servicebus.windows.net/;SharedSecretIssuer=[issuer];SharedSecretValue=[key]"></add>
</connectionStrings>
现实情况是,NServiceBus以 MyAssemblyName-MyMachineName.events 格式在Azure上创建新主题。
我们使用Azure Service Bus传输。
如何让NServiceBus将事件发布到特定主题?我是否误解了MessageEndpointMappings的目的?
答案 0 :(得分:1)
Azure servicebus不允许为具有相同名称的不同类型的多个实体命名,因此每个端点都定义了一个以端点名称命名的输入队列和一个带有&#39; .events&#39;的发布主题。追加。
您无法发布到特定主题,端点只能在其上发布自己的主题,订阅者可以决定侦听特定端点。
您的映射文件实际上是说,所有类型为Messages.Response的消息/命令都应该发送到端点&#39; test1&#39;的输入队列,或者如果TheResponse是一个事件:请订阅发布端点&test;测试1&#39;