首先我的具体问题
假设我有 3 个主题订阅者,但我只想定位特定订阅者;可以这样做吗?
我想要完成的事情
收听主题的订阅者将处理消息,其中可能包括数据库访问(并且数据库可能暂时关闭)。当出现问题时,我希望能够在以后重新处理。
我知道我们可以使用 Defer() 稍后处理,但是它需要您保存消息 ID。显然,如果数据库已关闭,我无法保存在那里,所以如果我想持久保存,我必须保存到另一个数据存储区。
如果那个“其他数据存储”是服务总线,那么我似乎必须为我的每个订阅者创建主题,这似乎有点难以管理。我的计划是将失败的请求发送到主题的死信队列。计划任务将定期出现,并从每个主题的 DLQ 中取出消息并尝试处理。如果它再次失败,我想重新提交消息并增加一个“AttemptedTries”计数器,它是消息本身的一部分。如果我可以仅针对相关订阅者,我希望它不必处理没有问题的主题订阅者(如果此功能无法完成类似操作,我可能会添加过滤器或其他东西)。
在尝试 >= maxattempts 之后,我会将消息发送到一个通用的“墓地”(不是特定于主题的),程序员可以在那里决定如何处理这些消息。
这是处理它的好方法吗?ASB 是否有一些内置的?