RabbitMQ之渐入佳境

前言

上一节提及到的rabbitMQ提供的的三种常用命令rabbitmq-server,rabbitmq-plugins,rabbitmqctl,其中rabbitmqctl的命令最为丰富,功能支持用户的操作,交换机的操作,vhost等的操作,有关rabbitmqctl的使用可以通过在Linux系统在rabbitmq的目录下输入命令rabbitmqctl - list就可以查看ctl所有的命令。

Exchange交换机的架构图

rabbitmq之所以能实现解耦,是基于交换机的特点,消费端以及生产端之间通过broker来交互,而消费端监听队列,而生产端发送消息到交换机,中间的消息通过routingkey来实现路由到对应的队列,进行消费。
在这里插入图片描述
开始编程,过程大致可以分为,ConnectFactor创建连接对象Connetion,然后通过连接对象创建channel,这个是所有消息队列的必须,然后再声明交换机以及队列即可
在这里插入图片描述
从源码来看看api的解析
在这里插入图片描述
从管控台可以看到的队列,交换机,vhoust等的信息
在这里插入图片描述
以上就是最基本的从生产端到消费端的消费过程,而下面就重点介绍交换机的routing规则

Exchange的路由规则

Exchange的路由规则大致常用的有direct,fanout,topic,还有一种通过安装plugin来实现的路由规则,这里不是重点,其中,direct是通过简单的交换机对应的队列的名字跟路由规则一样的话,就默认的给对应的队列传送消息,这个是单向的生产消费,而fanout是使用最广泛,效率也是最高的,通过广播的模式来实现消息的投递到队列进行消费,而topic是支持模糊匹配的路由到队列进行消费的,*代表是一个词,#代表的对个词。下面详细的来介绍每个的使用
directExchange的路由规则
在这里插入图片描述
通过上图对direct的描述,可以大致的写出伪码如下
在这里插入图片描述
消费端的代码大致如下,这里只要队列的名字跟routingkey的名字一样就实现direct投递消息进行消费
在这里插入图片描述
从控制台来分析生产的数据以及消费的数据,显示出绑定的规则,通过控制台知道,需要队列的名字完全匹配routingkey才可以实现路由规则,消费消息。
在这里插入图片描述
下面看看TopicExchange的架构图,通过架构图可以大概的了解到Topic规则是通过生产端把msg路由到exchange,然后通过bindings的对象把exchange跟queue绑定,队列指定接收的路由规则,再让指定的消费端来消费。
在这里插入图片描述
看看伪代码,设置好队列,交换机的信息,通过channel来声明队列,最重要的是建立绑定关系在这里插入图片描述
生产端的伪代码,从代码看到,只有队列的名字符合交换机的消息投递的routingkey的规则才会接受到消息。这里也可以通过管控台的可以了解到绑定的队列的消费的情况。
在这里插入图片描述
fanoutExcange的路由规则
从fanoutExchange的架构图可以发现是不经过routingkey的规则,直接从生产投递到交换机,然后直接到队列进行消费。只有有交换机跟队列可有绑定关系就有broker关系在这里插入图片描述
从管控台看到fanout的routingkey是空的
在这里插入图片描述
从消费端的伪代码来看,看到他与routingkey是没关系的
在这里插入图片描述

Message的消息设置

通过上面提及到的交换机以及队列之间的交互,路由键的路由规则,生产端以及消费端之间的消费的体系,可以大致的了解整个broker的架构,以及消费的规则,从伪代码的角度来介绍了api的使用,从管控台的显示,分析到每个设置的作用等等,下面就开始进入到message的设置部分,架构搭好就进入到消息的设置,包括对消息的管理控制,失败转移,消费回应等
设计一个带有附加属性的message下面自定义了编码,过期时间,头信息等
在这里插入图片描述

从消费端的伪代码来接收,可以了解到可以通过对生产端的AMQP设置message的配置来进行自定义的消息
在这里插入图片描述

Virtual host 虚拟主机

类似于redis的16个逻辑数据库的概念一样是属于逻辑层面的概念,里面会包含多个不同的exchange以及不同的queue。

总结

通过上面的几种的exchange的路由规则,使用的细节,管控台的使用,关键的绑定的关系binding的对象的创建,其次就是构建队列的参数,message的组成,本质是一段数据,消息的优先级别,对于集群的消息队列,这个级别就不起效果,但是后面会详细的解决这个顺序消费的问题,以及消息的ack,失败后可以返回到那个队列进行处理,过期时间等等
后续还有sharding的交换机,分片的交换机,以后有机会会详细的讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值