Rabbitmq的四种交换类型

本文介绍了RabbitMQ的四种交换类型:直接交换用于有优先级的任务,扇形交换实现广播效果,主题交换基于规则匹配队列,首部交换则依据Headers进行路由。通过示例展示了如何设置不同的交换类型,特别是扇形广播的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于rabbitmq中的类型交换 

    今天才刚开始接触rabbit,记录一下自己写的代码

exchange有4中类型:

直接交换中心:(Direct exchange)
扇形交换中心:(Fanout exchange)
主题交换中心:(Topic exchange)
首部交换中心:(Headers exchange)
        

第一种直接交换中心

    直接交换中心是一个带路由功能的exchange,一个队列会和一个exchange绑定,除此之外再绑定一个routing_Key,当消息被发送的时候,需要指定一个routing_Key,这个消息被送到exchange的时候,就会被exchange送到指定的队列里面去。

    适用场景:有优先级的任务

第二种 扇形交换中心也叫做广播交换中心

    扇形交换中心会把能接收到的消息全部发送给绑定在自己身上的队列

 

第三种 主题交换中心

    跟直接交换类似,主题交换中心是用一定的规则去匹配相应的队列

    规则

     topic消息类型不能是任意的routing key, 必须是有点"."组成的单词列表。
     注意可以用*号和#号出现,和我们日常用的正则表达式含义相近
     "*"号代表任意一个单词
     "#"号代表0个或多个单词

第四种 首部交换中心

         首部交换中心是忽略routing_key的一种路由方式。路由器和交换中心的路由规则是通过Headers信息来交换的。将一个exchange声明为首部exchange,绑定一个队列的时候,定义一个Hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当Hash的内容匹配上的时候,消息就会被写入队列。但是Hash结构中需要携带键值x-match” 值为all或者any。
一个简单的广播方式实现,当为扇形广播的时候,交换机为""

bool IsFanout = false;//广播方式
                if (exchange_type == ExchangeType.Fanout)
                {
                    //广播方式
                    IsFanout = true;
                    EXCHANGE_NAME = EXCHANGE_NAME ?? "mst_exchange_fanout";
                }
                else
                {
                    EXCHANGE_NAME = EXCHANGE_NAME ?? "mst_exchange_topic";
                    exchange_type = ExchangeType.Topic;
                }

                channel.ExchangeDeclare(exchange: EXCHANGE_NAME, type: exchange_type);
                channel.QueueBind(routingKey, EXCHANGE_NAME, IsFanout? EXCHANGE_NAME:"");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值