单个Windows服务中有多个NServiceBus主机

时间:2014-09-08 15:25:05

标签: nservicebus

我有一个数据库,其中包含许多队列,其中包含来自第三方产品的消息。我想将这些消息导入我的总线进行处理,并且相信我可以使用NServiceBus来实现这一点,但我想在一个Windows服务中托管所有消息,这些消息将在数据库队列上进行配置以进行监视。

处理步骤如下:

1)导入总线 2)转化为信息 3)发送总线消息

每个NServiceBus都将配置为定期轮询数据库队列。当消息到达时,它将执行Bus.SendLocal以执行步骤1.

然后,NSB主机将使用消息处理程序接收进程。在此消息处理程序中,将发生消息的转换。最后,将发送实际的总线消息。通常的配置会处理目标主机。

我想了解是否可以在单个Windows服务中放置多个NSB主机,以及是否存在与此相关的任何问题?我相信所有主机都需要共享相同的配置(我很高兴这个限制),这是正确的吗?

如果多个主机是' no-no',我的替代方案是使用带有总线引用的Window Service(单例)。 TPL任务将监视数据库队列,然后使用总线导入数据库消息。单独的NServiceBus将处理或导入的数据库消息,并执行转换并发送到其他主机。

抱歉问题的长度。

2 个答案:

答案 0 :(得分:2)

您应该能够使用Satellite执行这些类型的数据库查询,然后转发到总线上。

答案 1 :(得分:0)

“主持人”是什么意思?你的意思是说一个端点可以处理许多不同的消息类型吗?

您可以在单个主机中处理任意数量的不同消息类型。唯一的限制是它们将共享相同的队列,这意味着所有消息类型将被赋予相同的优先级(这在非常特殊的情况下只是一个问题)。