有没有办法知道什么时候"每个人"在masstransit中完成了一条消息?

时间:2014-04-25 23:22:07

标签: c# angularjs asynchronous masstransit

我有一个很好的Web.API和Angular应用程序..然而有一个障碍..该应用程序在一个相当复杂(但很快)的工作流程中集成了几个不同的系统,我遇到的挑战是,当我踢它时关闭,我真的不知道它何时结束,因此,当异步调用完成时,有时屏幕会正确更新,有时进程仍在继续,刷新会显示过时的数据。

我想知道在MassTransit(除了PublishRequest)之外是否有办法可以"监控"一个特定的消息,知道它的所有消费者何时完成了它?

我有一些关于聆听"完成"消息反弹,但如果有10或20,000个用户......并且将所有内容都变成了请求,这似乎相当嘈杂,只是因为我能得到回应似乎同样浪费..

我全都耳朵,

由于

1 个答案:

答案 0 :(得分:0)

所以你有几个选项,在邮件列表中我认为过去也有过这方面的讨论。

  1. 使用Signalr在完成事件发生时通知UI。有一个RabbitMQ背板,我听说在某些情况下这非常棒。
  2. 执行请求/响应并等待每条消息的响应
  3. 请求/响应,但请求完成所有工作的Saga,然后在达到正确状态时作出响应。我从来没有尝试将它们捆绑在一起,所以可能有点棘手,但完全可行。
  4. 创建一个将响应状态消息的Saga,以便您的UI可以通过请求/响应直接ping它以获取更新。根据您为Saga备份数据的方式,您还可以在数据存储中查询Saga以获取状态。例如,NHibernate Saga Repository会让你只需点击DB表来获取状态。
  5. 可能还有其他一些选择,但最初并没有想到任何事情会变得非常复杂。我建议加入mailing list如果你想深入研究这个问题,因为那里的一些人有建立类似东西的经验。我刚做完最后一个。