【问题标题】:Azure ServiceBus Topics and QueuesAzure ServiceBus 主题和队列
【发布时间】:2018-04-03 17:03:59
【问题描述】:

大家下午好,我正在经历一个有趣的情况。

我有一个主题,这个主题有两个队列,在我的源代码中,我将向该主题发送一条消息。但问题是,在其中一个队列中,消息只能在 24 小时后才能读取。

在我发送的 BrokeredMessage 中是否需要在队列中进行任何配置或某些属性?

【问题讨论】:

    标签: azureservicebus servicebus azure-servicebus-queues azure-servicebus-topics


    【解决方案1】:

    您可以发布/发送计划在未来传递的消息,指定ScheduledEnqueueTimeUtc 值。

    更新:您可以利用订阅时的Filter Rule Action 来设置ScheduledEnqueueTimeUtc 值。

    更新 2:过滤规则操作的想法行不通。评估是针对主题(它本身就是一个队列)而不是订阅进行的。更不用说几乎没有详细说明如何操作的文档了。

    另一种方法可能是在您的订阅上设置默认 TTL 并启用“消息过期时的交易字母”。这会将过期 TTL 为 24 小时(或您需要的任何其他任意时间)的任何消息移动到订阅的死信队列。有了它,您可以将“Forward Dead Lettered Messages To”设置到您的端点需要处理的队列中。

    【讨论】:

    • 但我只需要为两个订阅之一安排消息,另一个我想立即发送
    • 那你就不行了。发布消息意味着任何订阅者都会得到它。除非您引入特定于队列侦听器的内容以在从订阅接收到消息后延迟消息,否则您无能为力。
    • 现在考虑一下,规则操作可能是一种选择。更新了我的答案。
    • hmmmm 我明白了,它是如何工作的?所有发送到签名的消息都将被安排?我可以使用 Azure 的门户还是仅通过代码配置该规则操作?
    • 代码或工具。 Cogin 的 QueueExplorer 可以做到。 ServiceBusExplorer 目前只能可视化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多