我们遇到的问题是,我们使用传闻来延迟消息,以便使用版本控制变量进行及时执行。传奇获取执行日期,推迟消息,并发送超时以在最后一个延期消息之后的五天内取消传奇集。这允许整个公司的人员在超时前五天内使用传奇数据解决任何错误。
我们还提供了在业务规则发生变化时重新排队延迟消息的选项。在过去的几个月里,我们一直在使用这种方法取得了很大的成功。最近有一个业务规则更改,它推迟了特定客户端的所有消息。虽然所有的传奇数据似乎都没问题,但它似乎正在重置超时以便在以后的日期到期。当延迟消息执行时,它声明saga不再存在,当我看到它时,我也看到了这一点。此外,我注意到延迟消息没有携带SagaID。我确认这不是什么新鲜事,因为一堆“仍然排队”的消息既不包含SagaID,但它们似乎正在成功执行。
我的问题是关于读取超时和延迟消息数据的能力。我注意到它们看似加密,我看到的是NServiceBus构建的消息。我很好奇是否有办法阅读由NServiceBus创建的消息。
{
"Destination": {
"Queue": "clientdata",
"Machine": "cnapp04"
},
"SagaId": "00000000-0000-0000-0000-000000000000",
"State": "PD94bWwgdmVyc2lvbj0iMS4wIiA/Pg0KPE1lc3NhZ2VzIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zPSJodHRwOi8vdGVtcHVyaS5uZXQvTHNyLk1pbGl0YXJ5U2VhcmNoLlNlYXJjaC5NZXNzYWdlcyI+CjxRdWV1ZWRTZWFyY2hDb21tYW5kPgo8U2FnYUlEPmIxNmM4NDk5LTc",
"Time": "2013-09-09T09:00:00.0000000Z",
"CorrelationId": null,
"OwningTimeoutManager": "ClientData",
"Headers": {
"WinIdName": "COMPANY\\user_name",
"NServiceBus.Timeout.Expire": "2013-09-09 09:00:00:000000 Z",
"NServiceBus.OriginatingSagaId": "b16c8499-72f6-4cea-89e1-a18e0101eb82",
"NServiceBus.OriginatingSagaType": "ClientData.Search.Handlers.SalesPolicy.SaleHandler, ClientData.Search, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"NServiceBus.EnclosedMessageTypes": "ClientData.Search.Messages.QueuedSearchCommand, ClientData.Search, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"NServiceBus.RelatedTo": "db644e60-5ba1-4d26-a4ef-876855581bd5\\42719333",
"NServiceBus.TimeSent": "2013-04-01 17:34:42:712194 Z",
"NServiceBus.Version": "3.2.7",
"CorrId": null
}
}
此外,如何使用CorrelationID?我没有看到这是如何确定的。
答案 0 :(得分:0)
此状态存储为字节数组。我不是Raven专家,所以我不知道你是否可以用其他方式本地查看。您可能需要使用一些代码将此对象反序列化为可读格式。