tencent cloud

文档反馈

Exchange

最后更新时间:2024-01-03 11:39:16
    本文介绍 TDMQ RabbitMQ 版中 Exchange 的概念、类型和使用方式。

    概念

    Exchange 是 TDMQ RabbitMQ 版的消息路由代理,Producer 将消息发送到 Exchange 中,Exchange 根据消息的属性或内容将消息路由到一个或多个 Queue 中(或者丢弃),Consumer 从 Queue 中拉取消息进行消费。
    TDMQ RabbitMQ 版目前支持 Direct、Fanout、Topic 和 Header 四种类型的 Exchange。
    Direct:该类型 Exchange 会把消息路由到 RoutingKey 和 BindingKey 完全匹配的 Queue 中。
    Fanout:该类型 Exchange 会将消息路由到所有与其绑定的 Queue 中。
    Topic:该类型 Exchange 支持多条件匹配和模糊匹配,即使用 RoutingKey 模式匹配和字符串比较的方式将消息路由至与其绑定的Queue中。
    Header:该类型 Exchange 与 Routing Key 无关,匹配机制是匹配消息中的 Headers 属性信息。在绑定 Queue 与 Headers Exchange 之前声明一个map键值对,通过这个map对象实现消息队列和交换机的绑定。

    Direct Exchange

    路由规则:Direct Exchange 会把消息路由到 RoutingKey 和 BindingKey 完全匹配的 Queue 中。
    应用场景:该类型 Exchange 适用于通过简单字符标识符过滤消息的场景,常用于单播路由。
    使用示例
    
    
    
    Message
    Routing Key
    Binding Key
    Queue
    Message 1
    bizA
    bizA
    Queue 1
    Message 2
    bizB
    bizB
    Queue 2

    Fanout Exchange

    路由规则: 该类型 Exchange 会将消息路由到所有与其绑定的 Queue 中。
    应用场景:该类型 Exchange 适用于广播消息的场景。例如分发系统使用 Fanout Exchange 来广播各种状态和配置更新。
    使用示例
    
    
    
    Message
    Routing Key
    Binding Key
    Queue
    Message 1
    bazA.wechat_pay
    bazA.credit,bazB.credit
    Queue 1,Queue 2
    Message 2
    bazA.alipay
    bazA.credit,bazB.credit
    Queue 1,Queue 2
    Message 3
    bazC.credit
    bazA.credit,bazB.credit
    Queue 1,Queue 2

    Topic Exchange

    路由规则:该类型 Exchange 支持多条件匹配和模糊匹配,即使用 Routing Key 模式匹配和字符串比较的方式将消息路由至与其绑定的 Queue 中。
    Topic Exchange 支持的通配符包括星号“*”和井号“#”。
    星号“*”代表一个英文单词,例如 sh。
    井号“#”代表零个、一个或多个英文单词,单词间用英文句号"."分隔,例如 cn.hz。
    应用场景
    该类型 Exchange 常用于多播路由,例如需要使用 Topic Exchange 分发有关于特定地理位置的数据。
    使用示例
    
    
    
    Message
    Routing Key
    Binding Key
    Queue
    Message 1
    cn.hz
    cn.hz.#
    Queue 1
    Message 2
    cn.hz.store
    cn.hz.#cn.*.store
    Queue 1、Queue 2
    Message 3
    cn.sz.store
    cn.*.store
    Queue 2

    Header Exchange

    与 Routing Key 无关,匹配机制是匹配消息中的 Headers 属性信息。在绑定 Queue 与 Headers Exchange 之前声明一个map键值对,通过这个map对象实现Queue 和 Exchange 的绑定。当消息发送到 RabbitMQ 时会取到该消息的 Headers 与 Exchange 绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列。
    匹配规则x-match有下列两种类型:
    x-match = all :表示所有的键值对都匹配才能接受到消息
    x-match = any :表示只要有键值对匹配就能接受到消息
    
    
    
    Message
    消息Headers属性
    Binding Headers 属性
    Queue
    Message 1
    key1=value1
    key2=value2
    x-match = any
    key1=value1 key2=value2
    Queue 1
    Message 2
    key1=value1 key2=value2
    key3=value3
    x-match = any key1=value1 key2=value2
    
    x-match = all key1=value1 key2=value2
    key3=value3
    Queue 1、Queue 2
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持