gpt4 book ai didi

azure - 放弃 Azure SB 消息以便它在将来以我可以控制的方式再次可见的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 10:43:28 31 4
gpt4 key购买 nike

因此,情况是我使用 SB 队列来限制对其他服务的传出回调。回拨其他服务的标准问题之一是它们可能会出现无法控制的停机时间。假设我检测到目标已关闭/没有响应,放弃该消息以使其不会立即重新出现在队列中的最佳模式是什么?

以下是我所知道、已经尝试或正在考虑的一些方法:

  • 显然,如果我只使用 BrokeredMessage::Abandon()该消息将被解锁并放回到队列中。对于这种情况和我试图避免的情况来说,这显然是不可取的。

  • 如果我只是忽略我遇到错误的事实并且从不调用 Abandon,这将阻止它立即显示,但我实际上无法精细控制它再次显示的时间,并且我想实现衰减重试策略。

  • 我想也许我可以打电话 BrokeredMessage::Abandon(IDictionary<string, object>)并以某种方式更新 ScheduledEnqueueTimeUTC属性,但我已经尝试过,除了最初发送消息之外,似乎没有办法影响该属性。有道理,但值得一试。

  • 我考虑过只使用 BrokeredMessage::Complete()在这种情况下,实际上只是将消息的新副本ScheduledEqueueTimeUTC 一起排队属性集。

最后的子弹几乎看起来太严厉了,但我得出的结论是,考虑到队列的固有性质,这可能是正确的答案。我只是想可能有一种更好的方法可以在我所缺少的 Azure SB 队列中执行此操作。

最佳答案

如果您想将消息暂时搁置,并且有地方可以写下 SequenceNumber(可能在 session 队列中处于 session 状态),您可以 Defer() 它。可以使用给出 SequenceNumber 的特殊接收重载来检索延迟消息;这也是除了过期之外再次获取它们的唯一方法,所以要小心。此功能是为工作流和状态机构建的,以便它们可以处理无序消息到达。

关于azure - 放弃 Azure SB 消息以便它在将来以我可以控制的方式再次可见的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289605/

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