如何使用NServiceBus中的Raven读取/解密TimeoutData?

时间:2013-09-05 14:49:46

标签: ravendb nservicebus

我们遇到的问题是,我们使用传闻来延迟消息,以便使用版本控制变量进行及时执行。传奇获取执行日期,推迟消息,并发送超时以在最后一个延期消息之后的五天内取消传奇集。这允许整个公司的人员在超时前五天内使用传奇数据解决任何错误。

我们还提供了在业务规则发生变化时重新排队延迟消息的选项。在过去的几个月里,我们一直在使用这种方法取得了很大的成功。最近有一个业务规则更改,它推迟了特定客户端的所有消息。虽然所有的传奇数据似乎都没问题,但它似乎正在重置超时以便在以后的日期到期。当延迟消息执行时,它声明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?我没有看到这是如何确定的。

1 个答案:

答案 0 :(得分:0)

此状态存储为字节数组。我不是Raven专家,所以我不知道你是否可以用其他方式本地查看。您可能需要使用一些代码将此对象反序列化为可读格式。