NServiceBus:按需处理消息

时间:2011-06-15 05:13:56

标签: .net nservicebus servicebus ondemand

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

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

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

关于这个问题我的主要问题是:这是否打破了围绕NServiceBus的基本原则?如果没有,无论如何通过NServiceBus API执行此操作?

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

干杯

1 个答案:

答案 0 :(得分:3)

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

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