我有一个数据库,其中包含许多队列,其中包含来自第三方产品的消息。我想将这些消息导入我的总线进行处理,并且相信我可以使用NServiceBus来实现这一点,但我想在一个Windows服务中托管所有消息,这些消息将在数据库队列上进行配置以进行监视。
处理步骤如下:
1)导入总线 2)转化为信息 3)发送总线消息
每个NServiceBus都将配置为定期轮询数据库队列。当消息到达时,它将执行Bus.SendLocal以执行步骤1.
然后,NSB主机将使用消息处理程序接收进程。在此消息处理程序中,将发生消息的转换。最后,将发送实际的总线消息。通常的配置会处理目标主机。
我想了解是否可以在单个Windows服务中放置多个NSB主机,以及是否存在与此相关的任何问题?我相信所有主机都需要共享相同的配置(我很高兴这个限制),这是正确的吗?
如果多个主机是' no-no',我的替代方案是使用带有总线引用的Window Service(单例)。 TPL任务将监视数据库队列,然后使用总线导入数据库消息。单独的NServiceBus将处理或导入的数据库消息,并执行转换并发送到其他主机。
抱歉问题的长度。
答案 0 :(得分:2)
您应该能够使用Satellite执行这些类型的数据库查询,然后转发到总线上。
答案 1 :(得分:0)
“主持人”是什么意思?你的意思是说一个端点可以处理许多不同的消息类型吗?
您可以在单个主机中处理任意数量的不同消息类型。唯一的限制是它们将共享相同的队列,这意味着所有消息类型将被赋予相同的优先级(这在非常特殊的情况下只是一个问题)。