Rebus 2 - 手动重试

时间:2016-01-11 13:03:51

标签: rebus

是否有任何最佳做法'用rebus2手动重试?

我有一个用于错误监控的自定义网络用户界面'我希望能够从Web UI手动重试错误。问题是错误队列似乎始终是错误'所以它不包含原始队列的信息。

我们使用SQL Server作为Rebus消息的存储。

1 个答案:

答案 0 :(得分:0)

您可以解码失败邮件的标头 - rbs2-source-queue将设置为传递失败的队列名称。

标题以UTF8编码的JSON存储在消息表的headers列中 - 您可以通过

来检查它
SELECT TOP 10 CAST([headers] AS VARCHAR(MAX)) FROM [messages]

(这可能不总是100%正确,因为SQL Server中没有真正的UTF8操作,但它应该在大多数情况下显示标题就好了)

当你在C#land中时,当你在messages表上打开查询结果的数据头时,很容易做到这一点:

while(reader.Read())
{
    var bytesFromHeadersColumn = (byte[])reader["headers"];
    var jsonText = Encoding.UTF8.GetString(bytesFromHeadersColumn);

    // use a JSON serializer to parse jsonText here...
}

这样可以很容易地从失败消息的标题中提取源队列信息。

我希望这是有道理的:)