更新 ravendb 中 "FailedMessages" 文档的正文(服务控制实例)
Update body of a "FailedMessages"-document in ravendb (servicecontrol instance )
我希望能够重试失败的 NServicebus 消息,但使用更新的正文。
我已经成功地更新了 "FailedMessages" 文档的 ravendb(servicecontrol 实例)中的 body 标签
但是
api 仍然是 returns 旧正文(来自 bodyUrl)。因此,当我重试来自自定义文档查看器的消息时,到达处理程序时正文仍然是旧的。
可以更新正文吗?
-编辑-
当您使用服务控件 API 进行重试时。重新发送的是错误队列中的消息还是从 servicecontrol ravendb 实例收集的数据放在一起发送?
无法更新消息正文,这违背了消息不可变的基本原则...
如果出于业务原因需要修改数据,则应由您的应用程序逻辑来完成,即协调过程。
有道理吗?
编辑:-
错误消息从错误队列中处理并存储在 RavenDB 文档中,当重试或重试批处理被调用时,消息被组合并发送到正在处理字段消息的原始端点。只是为了清楚。
请注意:ServiceControl 的 API 不是 public 并且支持 API...
我刚刚更新了一条消息的正文。毕竟是可以的。
这是 ServiceControl 的一些源代码:
DocumentStore.DatabaseCommands.PutAttachment("messagebodies/" + bodyId, null, bodyStream, new RavenJObject
{
{"ContentType", contentType},
{"ContentLength", bodySize}
});
之前我尝试更新带有 body 标签的 FailedMessage 文档。但我需要更新附件。上面代码中的bodyId不是UniqueMessageId而是ProcessingAttempts -> MessageMetadata -> MessageId中的MessageId。
我希望能够重试失败的 NServicebus 消息,但使用更新的正文。
我已经成功地更新了 "FailedMessages" 文档的 ravendb(servicecontrol 实例)中的 body 标签 但是 api 仍然是 returns 旧正文(来自 bodyUrl)。因此,当我重试来自自定义文档查看器的消息时,到达处理程序时正文仍然是旧的。
可以更新正文吗?
-编辑- 当您使用服务控件 API 进行重试时。重新发送的是错误队列中的消息还是从 servicecontrol ravendb 实例收集的数据放在一起发送?
无法更新消息正文,这违背了消息不可变的基本原则...
如果出于业务原因需要修改数据,则应由您的应用程序逻辑来完成,即协调过程。 有道理吗?
编辑:-
错误消息从错误队列中处理并存储在 RavenDB 文档中,当重试或重试批处理被调用时,消息被组合并发送到正在处理字段消息的原始端点。只是为了清楚。
请注意:ServiceControl 的 API 不是 public 并且支持 API...
我刚刚更新了一条消息的正文。毕竟是可以的。
这是 ServiceControl 的一些源代码:
DocumentStore.DatabaseCommands.PutAttachment("messagebodies/" + bodyId, null, bodyStream, new RavenJObject
{
{"ContentType", contentType},
{"ContentLength", bodySize}
});
之前我尝试更新带有 body 标签的 FailedMessage 文档。但我需要更新附件。上面代码中的bodyId不是UniqueMessageId而是ProcessingAttempts -> MessageMetadata -> MessageId中的MessageId。