我正在实现一个具有 Web 界面(服务堆栈)和长时间运行的作业服务(服务堆栈?)的解决方案。
我已经实现了 Web 界面,并发现 servicestack 是一个非常好的框架,可以用来创建我想要的东西。我使用 redis 作为半可靠的对象存储。
然后我开始思考如何实现作业服务。我最初以为我要做的是设置一个简单的 Windows 服务,并让 redis 客户端拿起标记为作业服务的想法(我不确定到底如何)。这些是运行时间很长的作业,需要大量资源,所以我想限制一次运行的数量,以及如果我可以使用工作机器扇出会很好。
然后我看到 ServiceStack 有一个可能符合要求的 RedisMQ,因此问题就来了。
我是否应该创建一个单独的 servicestack 服务并将其托管在 Windows 服务中。然后在上面有一个 MQ 接口,让 web 服务发布到需要运行的消息队列作业。然后 jobservice 与 webservice 分离,一切都很好。
或者
我是不是想多了,应该只使用我已经运行的服务的逻辑部分并在那里实现作业逻辑,可以在 MQ 中弹出,但在同一个过程中可能只是浪费时间。我可以完全跳过消息部分,直接使用一些节流算法直接调用逻辑部分。
另外,当我对此进行测试时,我在创建 RedisMQ 服务器时遇到了麻烦
using ServiceStack.redis;
using ServiceStack.messaging;
var mqHost = new RedisMqServer(redisFactory, retryCount:2);
返回未找到 RedisMQServer。
我对 servicestack 和 servicestack.redis 包进行了完整的 nuget 安装
install-package servicestack
install-package servicestack.redis
当我在 .dll 上使用对象浏览器时,我没有发现任何提及 ReidsMQServer,版本 i 4.0.15 我找到了这个 url https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack。 Server/Messaging/Redis/RedisMqServer.cs 并且会认为这个应该属于servicestack.redis的引用。
任何帮助表示赞赏,干杯