gpt4 book ai didi

c# - 一段时间后在 azure 服务总线上重试消息?

转载 作者:行者123 更新时间:2023-12-03 00:23:23 33 4
gpt4 key购买 nike

问题:我需要重新安排/推迟在用户定义的作为接收者的耗时后处理的消息。

目标:在出现 ServerUnavailable 的 HttpReponseException 后,我想在 30 分钟后重试处理消息。它还必须遵循规则集,即在 10 次传递尝试后,消息将发送到死信队列(根据主题规则自动发生)。

所以我有一个函数应用程序来处理 Azure 服务总线主题。这意味着线程休眠不是一个选项。

我尝试过的:

  1. 我了解 messageSender.ScheduleMessageAsync(message, dateTime) 用于发送方安排消息以便稍后处理,这在发送新消息时有效,但是,我作为接收方希望获得异常(exception)后,我这边执行此操作。
  2. 我尝试使用 messageReceiver.DeferAsync(message.SystemProperties.LockToken, properties),属性包含新的“ScheduledEnqueueTimeUtc”,这确实会延迟消息,但序列 ID似乎不同步,导致无法接收我的延迟消息。
  3. 如果我克隆消息,我无法设置 SystemProperty.DeliveryCount,因为它是只读的,因此死信队列规则将无法按预期运行。我可以创建 UserProperty's 并在函数应用中手动计算消息重发和预定日期,但我想知道是否有更好的方法来执行此操作?

任何建议都会被采纳。

最佳答案

您对制定重试政策有何看法?并且您可以在队列中再次安排相同的消息,而不是 thread.sleep ,但具体时间为+30分钟,并返回积极响应以清除当前消息,

您需要保留deliveryCount规则,因此您可能需要向具有计数的消息队列添加属性?

我认为这个想法是逻辑的,here这篇文章可能对您有帮助,您需要使用 ScheduleMessageAsync 更改 thread.sleep

关于c# - 一段时间后在 azure 服务总线上重试消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63685772/

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