我是NServiceBus的新手,我试图将它与IIS和SignalR一起使用。我有一个工作场景,但我很好奇客户端如何选择要发布的队列。我注意到(通过停止IIS并运行发布者)消息被发布到system.web队列。我认为这是因为我的端点是由ASP.Net或类似的东西启动的。但是,这似乎是一个非常通用的队列,我想使用特定于应用程序的队列名称。如何指定发布者使用哪些队列?我已经改变了SignalR应用程序的端点,但它似乎没有太大的区别。
这是我的客户端配置:
[EndpointName("signalbus.web")]
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
}
以下是发布商的app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="TransportConfig" type="NServiceBus.Config.TransportConfig, NServiceBus.Core"/>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
</configSections>
<connectionStrings>
<add name="NServiceBus/Persistence" connectionString="Url = http://localhost:9090" />
</connectionStrings>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
<TransportConfig MaximumConcurrencyLevel="5" MaxRetries="2" MaximumMessageThroughputPerSecond="0"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="SignalBus.Messages" Endpoint="signalbus.web" />
</MessageEndpointMappings>
</UnicastBusConfig>
</configuration>
答案 0 :(得分:1)
配置总线时:
Configure.With().DefineEndpointName("MyAppName")
修改强>
根据您发布的代码和您的评论,我有点困惑。您是否在IIS / ASP.Net中托管订户?如果是这样,我认为EndpointConfig将被忽略,因为(AFAIK)它只能通过NSB主机使用。
请参阅此链接以在您自己的进程(或ASP.Net)中配置总线: http://docs.particular.net/nservicebus/hosting-nservicebus-in-your-own-process-v4.x
此外,您不需要在发布商的配置中引用订阅者端点 - 它不需要了解其订阅者。它通过RavenDB或您正在使用的任何订阅存储获得。