是否有任何最佳做法'用rebus2手动重试?
我有一个用于错误监控的自定义网络用户界面'我希望能够从Web UI手动重试错误。问题是错误队列似乎始终是错误'所以它不包含原始队列的信息。
我们使用SQL Server作为Rebus消息的存储。
答案 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...
}
这样可以很容易地从失败消息的标题中提取源队列信息。
我希望这是有道理的:)