gpt4 book ai didi

c# - Azure服务总线消息重新出现超时

转载 作者:行者123 更新时间:2023-12-03 04:46:26 25 4
gpt4 key购买 nike

如果我配置了服务总线代理消息接收器。并且由于任何原因它都会失败。我呼吁它

 message.abandon();

但这意味着消息将再次返回到队列/订阅中。

我可以配置一个超时,之后队列中可以处理相同的消息。

例如:如果队列中只有一条消息。如果它失败了,那么继续每秒或每分钟处理它是不好的。如果我配置一些东西,可以确保失败/放弃的消息仅在 30 分钟后重新出现。那么它就很有用了。

有什么建议吗?

最佳答案

当您放弃消息时,您无法提供“冷静”时间。该消息将立即可用。在 MaxDeliveryCount 尝试次数耗尽之前,它不会成为死信。一旦所有这些处理尝试都用完,消息将进入死信队列。

如果您需要推迟消息处理,有多种选择。

推迟消息

您可以使用BrokeredMessage.DeferAsync()推迟消息。消息将返回队列以供将来处理,并返回消息的 SequenceNumber。此方法的警告是需要保留 SequenceNumber 以便稍后检索消息。如果您碰巧丢失了 SequenceNumber,仍然可以浏览延迟的消息并检索它们。更多信息here .

安排新的 future 消息

另一种选择是克隆传入的失败消息,使用 BrokeredMessage.ScheduledEnqueueTimeUTC 将其安排在将来的某个时间并完成原始消息。使用此选项,我建议使用 send-via feature 发送计划在将来发送的新消息。 ,也称为 Transaction Processing ,利用完成传入消息和发送传出消息的原子操作。这样,如果完成失败,代码将不会产生“幽灵”消息。更多 information here .

使用客户端而不是消息进行安排

另一个选项是使用客户端进行调度,而不是使用 client.ScheduleMessageAsync() 进行调度。它将返回您需要保留的 SequenceNumber`,但使用此 API 可以在任何时间点取消消息,无需等待计划时间到达或接收消息。更多 information here .

关于c# - Azure服务总线消息重新出现超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48556134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com