RabbitMQ Routing 之订阅模型-Topic

在 RabbitMQ 中,Topic(主题)订阅模型 是一种基于路由键(routing key)的模式匹配消息分发机制。与 Direct Exchange 的精确匹配不同,Topic Exchange 允许队列通过通配符来绑定到交换机,并根据发送消息时携带的路由键进行模糊匹配。

工作原理:

  1. 创建 Topic 交换机
    首先声明一个 Topic 类型的交换机,例如 topic_logs

  2. 绑定队列
    消费者可以将队列绑定到这个 Topic 交换机上,并指定一个具有通配符的绑定键(binding key)。通配符有两种形式:

    • *(星号)代表一个单词。
    • #(井号)代表零个或多个单词。

    例如,队列 error_log 可以使用绑定键 "*.error" 绑定到交换机,这意味着它将接收所有包含 .error 的路由键的消息,如 "app.error""db.error" 等;而队列 all_logs 可以使用绑定键 "#",这将接收所有路由键的消息。

  3. 发布消息
    生产者向 Topic 交换机发布消息时,也需要携带一个路由键。例如,如果发布一条路由键为 "app.warning" 的消息,则该消息会被转发至所有与其路由键匹配的已绑定队列。

  4. 消息投递
    Topic 交换机会检查每个绑定关系,对比路由键和绑定键。如果路由键中的单词序列能够通过通配符匹配规则对应上绑定键,则消息会被投递到对应的队列。

这种模式适用于需要根据消息内容的不同部分或者类别来进行灵活分发的情况,例如日志系统可以根据日志级别和模块分类投递消息给不同的处理单元。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值