如何从NServiceBus中的多个端点搜索数据?

时间:2017-01-23 14:18:15

标签: c# .net nservicebus

我目前正在尝试使用NServiceBus找到解决问题的最佳解决方案:我有用户可以用来搜索不同内容的GUI,但有关这些内容的信息会传播到多个服务/数据库中。让我们举例说,用户正在搜索城市中的公园列表,但是这个城市的每个区域只保留他们自己的公园的信息(他们通过网络服务公开)。我需要NServiceBus向每个端点(分区)发送消息,用户需要什么信息,等待响应,然后当它从所有端点获取信息时(并且只有那时)将其发送回用户(GUI)。用户只对完整信息感兴趣,因此总线需要知道每个端点是否已发送其响应(它还需要实时,因此总线将假设端点处于脱机状态,如果需要花费太多时间,则会发送失败消息)。端点可以随时更改,因此代码需要易于维护。最佳选择是可以在不更改代码的情况下完成添加/删除端点。

以下是我对可能的解决方案的看法:

  • 发布/订阅模式让我可以轻松地向多个端点发送消息,并通过订阅/取消订阅随意添加/删除端点,而无需更改发布者的代码。问题:根据定义,发布者不知道有多少订阅者(以及他们是什么),所以等待所有订阅者的响应变得困难,如果不是不可能的话。

  • 请求/响应模式让我轻松告诉端点我想要回答,我会知道端点是否响应。问题:每次我需要添加/删除新端点时,我都需要更改发件人的代码。此外,可扩展性可能也是一个问题。

我的问题:有没有办法将这些模式结合起来?还是我错误地看待这个问题?甚至还有一种方法可以实现我想要的一切吗?

1 个答案:

答案 0 :(得分:0)

我认为你确实以错误的方式看待问题。

听起来您想要查询多个服务并聚合信息以便在UI中进行演示。一般来说,公交车不是直接查询的好选择。总线非常适合将命令发送到特定端点,以及在发生状态更改时发布状态。

如果您正在对端点执行查询,最好的办法是建模并公开查询(通过类似WebAPI的方式)。