【问题标题】:Is it possible to set up a TTL on a ServiceBus Dead Letter Queue messages?是否可以在 ServiceBus 死信队列消息上设置 TTL?
【发布时间】:2022-01-27 21:45:01
【问题描述】:

可以为Azure Service Bus 中的消息设置TTL。我想知道是否有可能对死信队列做同样的事情?

我想要实现的是对可能不再相关的旧消息的 DLQ 进行“自动清理”,这样我们就不需要手动执行此操作(开箱即用也不支持)。

【问题讨论】:

    标签: azure azureservicebus ttl dead-letter azure-servicebus-subscriptions


    【解决方案1】:

    我想要实现的是对可能不再相关的旧消息的 DLQ 进行“自动清理”,这样我们就不需要手动执行此操作(开箱即用也不支持) .

    您可以从死信队列中接收和删除消息,但您不能在死信消息上设置 TTL,因为这些消息是由服务创建并移动到子队列中的。虽然死信队列在许多概念中都模仿了常规队列,但事实并非如此。

    其中一个半自动化的方法是创建一个根据您定义的标准(例如消息年龄)查看消息并完成的流程。不幸的是,没有很好的方法可以查看general 中的消息。对于死信消息,除了偷看所有内容,然后过滤掉需要处理的消息之外,无能为力。

    另一种选择是将这些死信消息转换到数据库中,然后根据定义的标准退出进程,而无需不断查看所有消息。

    【讨论】:

    • 感谢您的回答!我认为唯一的方法是运行某种 Serivce / Azure Function 并自己编写代码,因为似乎没有内置的方法(根据您的回答)。
    • 确实如此。函数可能是实现它的最简单方法。我提出将 DLQ-ed 消息移动到数据库的想法的原因是能够进行更强大的搜索,而不是每次都为此付费。一切都取决于您拥有的消息量和场景。
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多