在我当前的项目中,我有一个想法,即对主题的订阅使用过滤器/规则以用于自定义重试策略。
我从Azure函数中的主题中收到一条消息,并尝试将其发送到远程服务。如果服务引发Timeout异常,我想向消息中添加一个名为PostponeUntil的自定义属性,该属性具有特定的日期时间(例如,在一小时内),再次将其添加到主题中,然后对订阅使用规则过滤掉此消息,直到可以重试为止。 是否可以使用SqlFilter这样的东西:
var filter = new Microsoft.Azure.ServiceBus.SqlFilter("GETDATE() = PostponedUntilDateTime");
如果没有,我有什么替代方案?
答案 0 :(得分:1)
要将消息延迟发送到服务总线队列和主题,您应该使用计划的消息传递。
您可以安排在特定时间发送给主题的消息,以便仅在指定时间将其排队入主题。
ScheduleMessageAsync
是您应该用来实现它的方法。
查看here,了解有关预定消息的更多详细信息。