Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将NServiceBus与多个应用程序同时用作发布者和订阅者_.net_Nservicebus - Fatal编程技术网

.net 将NServiceBus与多个应用程序同时用作发布者和订阅者

.net 将NServiceBus与多个应用程序同时用作发布者和订阅者,.net,nservicebus,.net,Nservicebus,我正在尝试使用NServiceBus使4个应用程序一起通信 所有这些应用程序都必须充当发布者和订阅者 我发现让它工作的唯一方法是在上创建一个名为Server的“主”队列 所有应用程序配置中的MessageEndpointMappings都映射到了哪个,但我认为这不是一个好方法 那么,我应该如何在所有这些应用程序上配置NServiceBus以使其正常工作呢 应用1: <MsmqTransportConfig InputQueue="MyApp1" ErrorQueue="Errors"

我正在尝试使用NServiceBus使4个应用程序一起通信

所有这些应用程序都必须充当发布者和订阅者

我发现让它工作的唯一方法是在上创建一个名为Server的“主”队列 所有应用程序配置中的MessageEndpointMappings都映射到了哪个,但我认为这不是一个好方法

那么,我应该如何在所有这些应用程序上配置NServiceBus以使其正常工作呢

应用1:

  <MsmqTransportConfig InputQueue="MyApp1" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
  <MsmqSubscriptionStorageConfig Queue="Subscriptions" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MyApp.Messages" Endpoint="Server" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

应用2:

  <MsmqTransportConfig InputQueue="MyApp2" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
  <MsmqSubscriptionStorageConfig Queue="Subscriptions" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MyApp.Messages" Endpoint="Server" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

应用程序3:

  <MsmqTransportConfig InputQueue="MyApp3" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
  <MsmqSubscriptionStorageConfig Queue="Subscriptions" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MyApp.Messages" Endpoint="Server" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

应用程序4:

  <MsmqTransportConfig InputQueue="MyApp4" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
  <MsmqSubscriptionStorageConfig Queue="Subscriptions" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MyApp.Messages" Endpoint="Server" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

NServiceBus建议您遵循仅由一个服务发布的特定消息类型的模式。通常,每个服务都有一个“消息”程序集,例如:

  <MsmqTransportConfig InputQueue="MyApp1" ErrorQueue="Errors" NumberOfWorkerThreads="1" MaxRetries="5"/>
  <MsmqSubscriptionStorageConfig Queue="MyApp1Subscriptions" />
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="MyApp2.Messages" Endpoint="MyApp2" />
      <add Messages="MyApp3.Messages" Endpoint="MyApp3" />
      <add Messages="MyApp4.Messages" Endpoint="MyApp4" />
    </MessageEndpointMappings>
  </UnicastBusConfig>


如果要从所有四个应用程序发布相同的消息类型,可以将消息Bus.Send()发送到中心事件发布服务器服务,然后该服务可以Bus.publish()将其发布。

因此,无论消息类型如何,您都希望每个应用程序都能够发布消息,并拥有所有四个应用程序(包括发布服务器)然后收到那个消息?如果不是,那么真正的目标是什么?您能否详细说明沟通需求背后的业务需求?