如何获得一系列 Windows 服务
How to have a sequence of Windows Services
我正在处理的解决方案需要在多个 Windows 服务中构建的多个进程,这些服务全部使用 C# 运行ning on .NET 构建。
- 服务 1:提取文件夹中文件中的数据
- 服务 2:分析数据并将结果放入图像文件
- 服务 3:将图像处理到另一个应用程序中
- 服务 4:生成报告
每个服务每小时 运行 秒。一切正常。
现在的要求之一是尽快完成所有服务。因此,我希望这些服务连续 运行。
如何从一项服务调用另一项服务或拥有一个 运行 一个接一个地提供所有服务的管道。
您可以使用消息队列。我推荐 RabbitMQ。很简单。根据您的业务流程,每个服务都会侦听其 pipeline/queue。例如,Service1 从文件中提取数据,然后将消息发送到 Service2 的队列。 Service2 获取消息并运行其任务,在完成其任务后向 Service3 发送消息...您可以使用 RabbitMQ 构建类似这样的流程。
你可以使用 FileSystemWatcher
and use folders as simple queues between services. Also note, FileSystemWatcher
might not be 100% Reliable: FileSystemWatcher vs polling to watch for file changes
可能需要设置 NotifyFilter
以获得您想要的行为。
您还可以向该服务添加一个互斥锁,它可能会检测它是否已经 运行,并一次性消耗 folder/file 更改。
还有其他重量更重、功能齐全的消息队列,但这些可能无法满足您的需求。
我正在处理的解决方案需要在多个 Windows 服务中构建的多个进程,这些服务全部使用 C# 运行ning on .NET 构建。
- 服务 1:提取文件夹中文件中的数据
- 服务 2:分析数据并将结果放入图像文件
- 服务 3:将图像处理到另一个应用程序中
- 服务 4:生成报告
每个服务每小时 运行 秒。一切正常。
现在的要求之一是尽快完成所有服务。因此,我希望这些服务连续 运行。
如何从一项服务调用另一项服务或拥有一个 运行 一个接一个地提供所有服务的管道。
您可以使用消息队列。我推荐 RabbitMQ。很简单。根据您的业务流程,每个服务都会侦听其 pipeline/queue。例如,Service1 从文件中提取数据,然后将消息发送到 Service2 的队列。 Service2 获取消息并运行其任务,在完成其任务后向 Service3 发送消息...您可以使用 RabbitMQ 构建类似这样的流程。
你可以使用 FileSystemWatcher
and use folders as simple queues between services. Also note, FileSystemWatcher
might not be 100% Reliable: FileSystemWatcher vs polling to watch for file changes
可能需要设置 NotifyFilter
以获得您想要的行为。
您还可以向该服务添加一个互斥锁,它可能会检测它是否已经 运行,并一次性消耗 folder/file 更改。
还有其他重量更重、功能齐全的消息队列,但这些可能无法满足您的需求。