【发布时间】:2019-02-01 02:13:00
【问题描述】:
我想知道是否可以将代理消息发送到消息已经处于延迟状态的队列/主题?
我问这个是因为我目前有一个执行以下操作的进程...
- 进程启动并将中间消息发送到队列(这会触发一个函数,该函数将消息正文作为一个实体记录在表存储中,并处于“处理中”状态)。
- 在此过程中完成了其他工作
- 如果我们在没有任何问题的情况下结束流程,则会将另一条代理消息发送到队列中并带有完成消息(这会触发将表存储中的实体更新为“完成”状态的相同功能)。
虽然这种方法大部分都有效,但它感觉笨重且脆弱。我真的很希望能够向队列发送消息,然后在最后一步使消息在队列中可见,以便函数可以使用它(持久函数)。
我考虑过设置ScheduledEnqueueTimeUtc,但我无法保证该过程何时结束(我在这里考虑最坏的情况)所以我不确定设置多长时间。
我还查看了BrokeredMessage 的Defer 选项,但似乎只能从接收器设置,并且最初不能处于延迟状态。
我正在尝试对服务总线代理消息执行什么操作?我是否可以将 Scheduled Enqueue 时间设置为如此长的时间(例如 2 小时),如果达到该时间,它会自动过期并移至死信队列?我是否应该将初始消息发送到死信队列,然后在该过程完成后检索它并重新提交?
有没有人在实现这样的流程方面有任何经验...发送开始消息并且仅在收到完成通知后才处理该消息?我需要它尽可能稳健,因为我在此过程中处理金融交易。
希望我的解释是有道理的。
【问题讨论】:
标签: azure azureservicebus azure-servicebus-queues brokeredmessage