这是我尝试使用 NServiceBus 组合在一起的应用程序:
- 我有 1000 个文件需要由服务处理。到目前为止,我在想我会有一个端点,即客户端,找到所有这些文件并将它们发送到总线上进行处理
- 我的另一个端点,即执行处理的服务器,将侦听这些客户端消息,当一个进入处理文件时,并返回结果。
- 客户端获取结果,将文件标记为已处理,并等待处理下一个 999 个文件。客户端不关心返回消息的顺序,只要它们都在某个时候得到处理。(实际上,客户端在处理数据后会对数据做更多的事情,这是服务器无法完成的,所以我不能只是触发并忘记处理请求。)
- 由于处理一条消息可能需要一个多小时,因此我将扩展应用程序以让多个服务器都尝试吃掉需要处理的 1000 个文件。
从概念上讲,这就像在我的所有服务器上构建个人 SETI 在家服务一样。
我遇到的问题是,如何在处理 1000 个文件的过程中停止?
- 我想让我的所有服务器尽可能多地处理我的数据,所以当客户端启动时,它是否会发布 1000 个命令来处理 1000 个文件,然后坐下来等待?如果它这样做并决定停止,它如何清除所有这些命令来处理文件的总线?
如果我的客户一次只在总线上推送一两条消息,如果我决定停止在客户端上,我可以很容易地停止发送消息,但是我还有另外两个问题
- 服务器可能没有得到充分利用,我最终会得到闲置的服务器。
- 如何停止加载并处理数据的服务器?向他们发送不同消息格式的第二条命令?
想法,想法?我是否使用正确的工具/正确的方法来解决这个问题?