更改哪些队列用于NServiceBus发布/订阅方案

时间:2014-07-23 18:16:05

标签: nservicebus

我是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>

1 个答案:

答案 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或您正在使用的任何订阅存储获得。