我正在考虑消息传递。目前,我们正在使用Rebus进行一些场景。我们也在考虑NServiceBus。
我们尝试构建的场景是后台任务处理系统的概念验证。今天,我们以不同的方式托管了一些后端服务。 (网络,Windows服务,控制台应用程序)我希望将它们连接到rebus并开始使用竞争消费者消费消息,一些消息将有一个监听器,一些将共享消息的负载。优雅:))
我从另一个问题How should I set rebus up for one producer and many consumers得到了一个很好的开端,它在概念验证方面做得很好。
现在我想开始报告进度。我的初步方法是设置pub / sub并启动一个侦听来自所有服务的进度事件的服务。如果某项服务在未来的特定进展中受到关注,则很容易为消息订阅拦截并开始倾听。
但是,如何设置竞争消费者和发布/订阅者呢?它是两个不同的东西? (在rebus的情况下,使用UseSqlServerInOneWayClientMode / UseSqlServer的一个适配器和使用我们想要的任何协议为pub / sub设置的另一个适配器?)
或者有一个更好的解决方案,然后在这里有两个“公共汽车”?
答案 0 :(得分:2)
我自己构建了几次这样的东西,使用SignalR报告这种后端工作进程的进展情况,我得到了很好的结果。
我们的设置有一堆WPF客户端,一个SignalR集线器和一堆后端工作进程。然后,所有WPF客户端和所有后端工作人员都将建立与集线器的连接,允许工作人员在工作时发送进度报告。
SignalR有一些很好的属性,使它非常适合这种确切的问题:
我想,最重要的一点是,这个进度报告事件(至少在我们的例子中)并不像我们的Rebus消息那么重要,即它不需要相同的可靠性等,我们可以使用它们优势,然后选择一种技术与其他一些很好的属性,结果很酷。