【问题标题】:Capture messages sent to Azure Service Bus Topics with no subscriptions or filtered out?捕获发送到 Azure 服务总线主题但没有订阅或过滤掉的消息?
【发布时间】:2019-06-01 20:59:30
【问题描述】:

我想使用针对不同消息类型的过滤器创建一个包含几个订阅的服务总线主题。但是,我需要保证发送到该主题的所有消息都将被至少一个订阅接收并成功处理,即使所有订阅进程都脱机。

有没有比自动转发到每个过滤器的队列更好的方法,以及捕获所有过滤订阅者忽略的消息而不捕获所有消息的方法?

编辑:我的动机是提供一种类似队列的机制,而不用为每个消息类型/优先级创建队列,或者至少在侦听端管理多个队列的复杂性。队列通常保证消费者。而不是让发布者必须推送到不同的队列,我想使用一个主题并使用过滤器来管理优先级。

根据我目前对 SB 的了解,我怀疑在公开主题以供使用之前,我只需要确保主题的订阅到位,包括反向全能过滤器订阅。我不知道订阅是否完全可靠。

【问题讨论】:

    标签: azure azureservicebus azure-servicebus-topics


    【解决方案1】:

    但是我需要保证发送到该主题的所有消息都将被至少一个订阅接收并成功处理,即使所有订阅进程都脱机。

    那句话有问题。主题和订阅用于实现发布/订阅并将发布者与订阅者分离。经纪人本身不保证会有订阅者。

    虽然主题支持 EnableFilteringMessagesBeforePublishing (TopicDescription.EnableFilteringMessagesBeforePublishing),但建议用于生产。

    更新

    根据更新后的问题,一般答案保持不变。主题/订阅用于发布/订阅和解耦。如果您想确保订阅者上线后不会丢失任何消息,则需要确保先创建订阅。

    我不知道订阅是否完全可靠。

    是的,订阅是可靠的。后台订阅是一个队列。

    如果您想根据消息类型将消息路由到不同的处理器,则将该消息发布到主题并进行转发订阅是一个不错的方法。您确实需要注意quotas(每个主题可以创建多少订阅),但这些都相当高。如果你达到了这一点,当给定处理器处理多种消息类型时,可以通过更复杂的SQL filtering rules 来减少订阅数量。

    【讨论】:

    • 我会更新我的答案,但总体思路保持不变。
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多