1

我刚接触服务总线(特别是 NServiceBus)并且刚刚编写了我的第一个 Saga。

saga 旨在接收交易,然后发送消息以验证用户 ID、支付详情和产品详情等,以针对一个大部分封闭的系统(难以以编程方式访问)。现在一些功能很容易实现自动化和编写处理程序,但在少数情况下需要手动干预才能完成事务,因为没有可用的 api 来执行这些任务。现在我们将有多个人工代理来解决这个问题,所以并发性是一个问题,我想为什么不让每个用户按需拉下一条消息,从而利用 MSMQ 中固有的并发性。

我无法在 nhibernate 上的 IBus 上找到任何方法来允许按需检索下一条可用消息,因为看起来一切都是基于推送的。所以我设计了一个 UI 原型,它使用标准的 .NET System.Messaging.MessageQueue API 从 MSMQ 手动检索消息,并允许用户与之交互,然后通过 IBus 写回响应将返回发送回 saga。发送()方法。

我的主要问题是:这是否违反了 NServiceBus 的基本原则?如果没有,是否可以通过 NServiceBus API 做到这一点?

您还会通过 MSMQ 还是通过 UI 应用程序来处理并发?

干杯

4

1 回答 1

3

出于多种原因,NSB 中的所有内容都是故意单向的。为了通知您的客户他们需要做某事,您可以轮询视图模型以查看是否有工作要在某个时间间隔内完成。Saga 将负责插入/更新正确的行以供 UI 使用。UI 完成后,您可以使用 NSB 将消息发送回 Saga。如果这是一个 Web UI,请查看下载中的 AsyncPages 示例。

另一种方法是向客户端推送消息,假设消息是与客户端一起安装的。您将需要在后台创建某种消息泵。同样,一旦工作完成,一个简单的 Send() 就可以了。

于 2011-06-15T12:35:25.993 回答