1

我有一种情况,我的 MSMQ 中的 Maxtries 为 5。5 次后,nservicebus 将消息发送到我定义的错误队列。现在我想在发生这种情况时执行一些进一步的操作(我必须将某些进程的状态更新为错误)是否可以在我的 Saga 类中编写一个处理程序来读取这些错误队列?

提前致谢 哈里斯

4

2 回答 2

2

如果您使用的是 2.x,您可能需要考虑编写一个单独的端点,其中错误队列是其输入队列。这样做的缺点是消息将离开队列。假设您仍想存储它们,则必须将它们推送到数据库或其他类型的存储中。

您还可以编写一个轮询错误队列以检查消息并更新适当状态的 Saga。每次检查队列后,您都需要请求另一个超时。

在 3.0 中,您可以更好地控制异常,并且可以实现自己的方式来处理错误。如果你实现了接口 IManageMes​​sageFailures,你可以在那里做你的工作。

于 2012-04-04T12:47:02.067 回答
0

作为 Adam 提供的解决方案的替代方案,您可以订阅由 ServiceControl 引发的事件,这些事件在向错误队列发送消息时引发。请参阅此处的官方文档:http: //docs.particular.net/servicecontrol/contracts

另一种方法是通知 API,如下所述:http: //docs.particular.net/nservicebus/errors/subscribing-to-error-notifications。它允许您直接在端点上订阅某些事件(不是事件消息),例如“MessageSentToErrorQueue”,因此您不需要使用错误队列。

于 2016-04-29T12:13:09.617 回答