如何拥有一系列Windows服务



我正在研究的解决方案需要多个进程,这些进程都是在多个Windows服务中构建的,所有这些服务都是使用运行在.NET.上的C#构建的

  • 服务1:提取文件夹中文件中的数据
  • 服务2:分析数据并将结果放入图像文件
  • 服务3:将图像处理到另一个应用程序中
  • 服务4:生成报告

每个服务每小时运行一次。一切都很好。

现在的要求之一是尽可能快地完成所有服务。因此,我希望这些服务能够连续运行。

如何从另一个服务调用一个服务,或者有一个管道一个接一个地运行所有服务。

您可以使用消息队列。我推荐RabbitMQ。这很简单。通过您的业务流,每个服务都侦听其管道/队列。例如,Service1从文件中提取数据,然后向Service2的队列发送消息。Service2获取消息并运行其任务,完成任务后向Service3发送消息…您可以使用RabbitMQ构建类似的流。

您可以使用FileSystemWatcher并将文件夹用作服务之间的简单队列。还要注意,FileSystemWatcher可能不是100%可靠的:FileSystemWatcher与轮询以监视文件更改

可能需要设置NotifyFilter才能获得您想要的行为。

您还可以向服务添加一个互斥对象,它可以检测服务是否已经在运行,并一次性使用文件夹/文件更改。

还有其他更重、功能齐全的消息队列,但对于您的需求来说,这些可能有些过头了。

相关内容

  • 没有找到相关文章