【问题标题】:NServiceBus - Retrieve Saga Status in MVC 3 ApplicationNServiceBus - 在 MVC 3 应用程序中检索 Saga 状态
【发布时间】:2012-01-26 20:17:14
【问题描述】:

我正在使用 NServiceBus 传奇来处理长期运行的业务流程。我有一个 MVC 3 应用程序,可以从负载均衡器后面的多个 Web 服务器访问。

目标是我可以让用户启动流程,并且我希望能够确定 saga 的状态。

最好的方法是什么?我感觉我需要某种持久性存储,但我真的不想大量访问我的数据库,因为每小时可能会运行数千个这种特殊的传奇。

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-3 nservicebus


    【解决方案1】:

    您可以在 Saga 步骤中内置,当状态更改时,它会 Bus.Sends() 将状态发送到另一个端点,该端点会更新您的 Web 应用程序可以查看的缓存或 PVM。该端点可以通过其他渠道与用户进行通信,例如电子邮件。将其推送到另一个端点将使您的 Saga 保持流畅。

    【讨论】:

    • 我实际上做了类似的事情。我有一个 memcached 服务器设置,我只是将更改推送到那里。这允许我的 Web 服务器(已经与 memcached 服务器通信)来获取更改。只需使用适当的键即可快速找到我的缓存记录。
    【解决方案2】:

    saga 可以发布事件来宣传事物的状态。即使不需要 MVC 应用程序“签入”,这也可能是一个好主意。

    您的网络应用可以订阅此事件并更新内存中的状态,网络请求可以检查和显示这些状态。当然,这不会在 Web 进程重新启动后继续存在。

    为了解决这个问题,saga 可以支持“我忘了你说了什么,请重新发送”命令。 MVC 应用程序将在 webapp 启动时(如果知道足够重要)或按需发送。然后,Saga 将通过 Bus.Reply() 向该服务器发送一个状态报告来响应不是最新的服务器。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2012-02-02
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多