N服务总线路由

Nservicebus routing

我们有多个 Web 和 windows 应用程序部署到我们计划使用 NservierBus 集成的不同服务器,让所有应用程序可以 pub/sub 在它们之间发送消息,我想我们使用 pub/sub 模式并使用 MSMQ 传输对它有好处。但有一件事我不清楚是否是一种避免硬代码将子端点设置为 MSMQ QueueName@ServerName 的方法,如果 pub 在另一台服务器上,则直接在其中包含服务器名称。在 6-pre 上,我看到了设置端点名称然后使用路由委托给传输级地址的想法,这是一个解决方案吗?或者只有网关是解决方案?经纪人是个好主意吗?这种情况的最佳做法是什么?

使用pub/sub时,订阅者当前需要知道发布者队列的位置。然后,订阅者每次启动时都会向该队列发送一条订阅消息。它不知道它是否已经订阅以及是否订阅了所有消息,因为您可能有 added/configured 一些新消息。

发布者读取这些订阅消息并将订阅存储在存储器中。 NServiceBus 会为您完成此操作,因此无需为此编写代码。您唯一需要做的就是在订阅者中配置发布者(队列)的位置。 我自己写了一个教程,你可以在这里找到它:http://dennis.bloggingabout.net/2015/10/28/nservicebus-publish-subscribe-tutorial/

话虽如此,您应该特别注意与发布消息的网站相关的问题。有关更多信息,请参见此处:http://docs.particular.net/nservicebus/hosting/publishing-from-web-applications

在使用 MSMQ 的横向扩展情况下,您还可以使用分发器:http://docs.particular.net/nservicebus/scalability-and-ha/distributor/

最后一点:这取决于情况,但我不会太担心知道端点(或它们的队列)的位置。我很可能不会仅仅为了这个 'technical issue' 而使用 pub/sub。但同样,这完全取决于情况。我可以理解随机生成的富客户端可能需要这个。但也有其他解决方案,具有更集中的存储和所有富客户端都可以访问的 API。