使用rebus2进行手动重试有什么“最佳实践”吗?
我有一个自定义的Web用户界面用于‘错误监控’,我希望能够从Web用户界面手动重试错误。问题是错误队列似乎总是“错误”的,所以它不包含原始队列的信息。
我们使用SQL Server作为Rebus消息的存储。
发布于 2016-01-11 21:18:32
您可以解码失败消息的标头- rbs2-source-queue将设置为传递失败的队列的名称。
标头作为utf8编码的headers存储在messages表的JSON列中-您可以通过下面的命令检查它
SELECT TOP 10 CAST([headers] AS VARCHAR(MAX)) FROM [messages](这可能并不总是100%正确,因为SQL Server中没有真正的UTF8操作,但在大多数情况下,它应该可以很好地显示标头)
当您在C#中时,当您在messages表上的查询结果上打开一个datareader时,很容易做到这一点:
while(reader.Read())
{
var bytesFromHeadersColumn = (byte[])reader["headers"];
var jsonText = Encoding.UTF8.GetString(bytesFromHeadersColumn);
// use a JSON serializer to parse jsonText here...
}这使得从失败消息的报头中提取源队列信息变得相当容易。
我希望这是有意义的:)
https://stackoverflow.com/questions/34722276
复制相似问题