rabbitMQ学习以及介绍

  1. rabbitMQ是常用的消息队列工具,常用于系统间的信息交流
  2. 相关的面试及学习笔记
  3. 相关的学习资料
  4. 相关介绍(笔记中也有)
    权限最高的帐户,guest

Hello world 直连
在这里插入图片描述

生产者和消费者的队列必须是一致的,包括持久化等特性, 简单的一对一模型,一个发布者一个消费者
work quene 任务模型
在这里插入图片描述

直连模型上增加几个消费者就是任务模型,默认情况下,RabbitMQ将按顺序将每个消息发送给下一个使用者。平均而言,每个消费者都会收到相同数量的消息。这种分发消息的方式称为循环,轮询方式分配,就是每个分配一次的方式,即使处理速度不一样,也是平均分配的,默认一次性平均轮询分配

如果要实现能者多劳,就是运行快的,分配的任务多,运行慢的分配任务少,就需要打开消息确认机制,以及限流。消息确认机制就是在处理完这个消息后,需要手动去确认,告诉MQ这个消息已经消费,限流就是每次只允许进入一个或者几个消息,在这个消息没有被确认消费前,是不允许再接收新的消息的。

Fanout 扇出 也称为广播`
在这里插入图片描述

广播模式相对于其他模式,会多出一个交换机,之前虚拟主机直接将产生的消息绑定队列,然后往队列里面发布消息,消费者绑定主机绑定队列后来消费队列里的消息。
而广播模式由于交换机的存在,虚拟主机会将产生的消息先放入交换机中,,将消息发布到交换机中即可,交换机的特点是同样一条消息可以被多个消费者消费,消费者只需要绑定主机,并且生成一个随机队列,然后主机,队列,交换机绑定在一起,就可以消费队列中的消息了。
广播模式最大的特点就是由于交换机的存在,同样的消息所有的消费者都可以收到。

Routing 订阅模型 -(直连)
在这里插入图片描述

订阅直连模式,是广播模式的改良版,消息生产者和消费者之间会有约定的路由key,即routingkey,只有持有路由KEY的消费者才能收到消息,没有路由KEY的消费者是不会收到消息的,
生产者的提供消息的过程:
生产者会先连接虚拟主机,然后创建通道,然后在通道上连接交换机,将消息发布到交换机里面,并约定路由KEY,广播模式消息的创建过程其实基本一样,区别就是广播模式不需要约定路由key,而订阅直连需要约定路由KEY
消费者的提供消息的过程:
消费者同理也会先连接虚拟主机,然后在创建的通道连接临时队列和交换机,并加入约定的路由KEY这样就可以从交换机里面获取约定好的消息了。
通道直连模式最大的特点是广播模式+路由KEY,多个消费者可以同时获取约定好的统同一消息

Routing 订阅模型-Topic 动态路由
在这里插入图片描述

订阅topic模型和订阅直连模型几乎一样,唯一不同的区别就是topic模型的交换机类型为topic,并且topic类型的路由KEY(routingkey)要用点“ · ”分隔,且支持通配符,支持情况如下:
*:匹配一个词 # :匹配多个词

Springboot整合rabbitmq

当配置文件中加入MQ的相关配置后,spring容器中就会生成rabbit Template变量来控制相应的队列以及接受,可通过@autowrite进行调用

直连和任务模型

发布器会直接利用rabbit Template将消息放入队列中,消费端则利用@RabbitListener来接受声明的队列的消息,可以放在类上也可以放在方法上,放在类前面的话,需要在方法前面加@RabbitHandler,来传入收到方法的参数,方法前面则不需要@RabbitHandler注解,消息接受逻辑不变

关于交换机,spring整合的交换机是由消费者创建的因为只有消费者才能指定消费者的类型,然后由生产者向交换机里面发送消息。他们是通过交换机名字进行联系
广播模型 订阅模型 -(直连) 订阅模型-Topic 动态路由
广播模型是把消息放在交换机中,然后通过@RabbitListener来创建未声明的临时队列,声明交换机名以及交换机类型,在下面的方法中就可以获取到交换机中的消息

订阅模型是在广播模型的基础上,消息发布者指定路由KEY,由拥有该路由KEY的消费者接受

动态路由相对于订阅直连模式最大的区别就是动态路由使用的是通配符,并且交换机模式为topic

搭建集群

RabbitMq集群主要有两种:副本集群和镜像集群
在这里插入图片描述

副本集群很不实用,其实可以看作主节点延伸出的两个分节点,他们只能代替主节点收发消息,然而并不能复制主节点的消息,分节点会通过连接到主节点找消息,只能做到分享主节点的队列的消息,但是当主节点DOWN掉的话,分节点是没有能力再提供消息来消费。

搭建副本集群
1.基本的rabbitMQ的部署
2.同步erlang文件
3.分节点加入主节点,完成搭建。

在这里插入图片描述

镜像集群
镜像集群其实就是副本集群 + 策略 ,在副本集群的基础上,任意一个节点添加策略即可改变成镜像集群,镜像集群顾名思义就是集群中的每个MQ服务器都拥有同样的队列和消息,队列和消息会在各个节点之间自动同步,当某一个节点挂掉之后,即使是主节点挂掉,其他节点照样可以正常使用,主节点挂掉之后,会有某个节点充当主节点
策略支持正则表达式,所以支持特定的队列,也支持所有队列,所以在企业中一般都会选择支持特定的队列,需要特定人员的操作执行,所谓的申请权限。
一般镜像集群会搭配ip漂移等技术来完成搭建,以保证某节点挂掉之后,去自动访问没有挂掉的节点。

在以往的工作中,用的MQ的队列情况:
对用户进行业务上的更改时,一般会更改数据库,然后就会发消息通知专业端这些更改操作,
集群用的是镜像集群,这就是为什么每次用到队列都会去申请权限,然后般发布用的是订阅直连模式,接受监听用的是任务模型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH = 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值