如何在Rebus中记录错误消息内容?

时间:2014-10-15 12:28:40

标签: rebus

是否有异常发生时记录消息内容?

我查看了各种日志记录扩展,但它们只记录了CorrelationId。并且消息内容不可用。

MessageContext中有一个CurrentMessge属性,但是当记录器写入异常时,该属性不可用。

我尝试处理PoisonMessage事件,它允许我记录消息内容。

public static void OnPoisonMessage(IBus bus, ReceivedTransportMessage receivedTransportMessage, Rebus.Bus.PoisonMessageInfo poisonMessageInfo) {

var message =  new JsonMessageSerializer().Deserialize(receivedTransportMessage);
    Log.Error("{@messageType} failed {@message}", message.Messages[0].GetType(), message);
}

这很好用,但是现在我在日志中有两个错误,一个来自我的处理程序,另一个来自logger。

我想知道是否有更好的方法来处理这个要求。

1 个答案:

答案 0 :(得分:0)

如果你的要求是简单地将消息内容记录为JSON,我认为你已经找到了正确的方法 - 至少就像我做的那样。

我很好奇你通过记录邮件内容解决了什么问题 - 你知道失败邮件最终会出现在你可以查看的错误队列中吗? / p>

如果您正在使用MSMQ,则可以使用Rebus' Snoop-tool检查JSON序列化消息,{{3}}是一个简单的MSMQ检查器。它还允许您将消息移回到失败的输入队列中("返回源队列")

监控Rebus安装的一个好方法是在某些内容到达错误队列时设置某种警报,然后您可以查看该消息(哪个事件包含特殊标头中捕获的异常)然后解决那里的情况。

相关问题