Nservicebus 竞争性消费者情景的进度报告方法

Nservicebus 竞争性消费者情景的进度报告方法,nservicebus,messaging,publish-subscribe,rebus,Nservicebus,Messaging,Publish Subscribe,Rebus,我正在想办法发消息。目前,我们正在使用Rebus触发一些场景。我们也在考虑NServiceBus 我们试图构建的场景是后台任务处理系统的概念验证。今天,我们有一些以不同方式托管的后端服务。(网络、windows服务、控制台应用程序)我希望将它们连接到rebus,并开始使用竞争消费者来消费消息,一些mesages将有一个侦听器,一些mesages将共享消息负载。优雅:) 我从另一个问题得到了一个很好的开始,它在概念验证中工作得很好 现在我想开始报告进展情况。我的初始方法是设置pub/sub,并启动

我正在想办法发消息。目前,我们正在使用Rebus触发一些场景。我们也在考虑NServiceBus

我们试图构建的场景是后台任务处理系统的概念验证。今天,我们有一些以不同方式托管的后端服务。(网络、windows服务、控制台应用程序)我希望将它们连接到rebus,并开始使用竞争消费者来消费消息,一些mesages将有一个侦听器,一些mesages将共享消息负载。优雅:)

我从另一个问题得到了一个很好的开始,它在概念验证中工作得很好

现在我想开始报告进展情况。我的初始方法是设置pub/sub,并启动一个服务,该服务侦听所有服务的进度事件。如果一个服务在未来的特定进程中被交互测试,那么很容易订阅消息的交互测试并开始监听

但我该如何建立竞争性消费者和酒吧/酒吧?它是两个分开的东西?(在REBS案例中,一个适配器使用UseSqlServerInNewAyClientMode/UseSqlServer,另一个适配器使用我们想要的任何协议为发布/订阅设置?)


或者有比在这里使用两个“总线”更好的解决方案吗?

我自己也构建过类似的东西好几次,我使用SignalR报告这种后端工作进程的进度取得了相当好的效果

我们的设置有一组WPF客户机、一个信号集线器和一组后端工作进程。然后,所有WPF客户端和所有后端工作人员将建立到中心的连接,允许工作人员在工作时发送进度报告

SignalR有一些很好的特性,非常适合这种问题:

  • 已发布的消息“逃逸”了Rebus工作单元,允许在单个消息处理程序中多次发送进度报告消息,即使这可能需要很长时间才能完成
  • 很容易将消息一路发送到客户端,因为它们直接订阅
  • 我们可以使用中心组功能对用户进行分组,这样我们就可以将来自后端的进度/状态消息定位于所有用户或单个用户(也可以用于部门等)

  • 我想,最重要的一点是,这个进度报告(至少在我们的案例中)没有我们的Rebus消息那么重要,也就是说,它不需要同样的可靠性等,我们可以利用我们的优势,然后选择一种具有其他一些优良特性的技术,结果证明它很酷。

    很有意义,我试试看!出于兴趣,在处理程序回滚期间如何处理进度报告?我不知道;)在这种情况下,我们小心地捕获用户可理解的异常(从
    域异常派生的异常
    ),并向用户报告作为失败的后台作业-在域异常没有重试的情况下,我们没有做任何事来处理技术异常(例如数据库并发异常),所以理论上我们可以这样报告进展:10%,20%,30%(woops,rollback)10%,20%。。。100%