RebbitMQ 消息队列(简单使用)

消息队列介绍

MQ的优势
1.业务解耦:不同系统消费信息互不关联,灵活增减系统数量,修改某个系统其他系统也不影响
2.异步提速:不同系统之间可同时响应,提升并发量
3.削峰填谷:处理消息高峰期,均摊到后面处理,保护系统的稳定性
MQ的不足
1.系统可用性降低:系统引入的外部依赖越多,系统稳定性越差
2.系统复杂度提高:怎么保证消息没有被重复消费,消息丢失,消息传递的顺序性等问题
3.一致性问题:MQ如何解决不同系统处理的一致性问题

MQ需要满足什么条件?
1.生产者不需要获取反馈
2.容器短暂的不一致性
3.能够体现MQ的优势在系统中,获得解耦,提速,削峰这些方面的收益

AMQP是一个消息队列协议,是应用层协议的一个开放标准,面向消息的中间件设计,基于此协议的客户端和消息中间件可传递消息
RabbitMQ由Erlang语言开发
在这里插入图片描述
rabbitmq相关概念
Broker:接受和分发消息的应用,rabbitmq server就是message broker
virtual host:用户空间,每个用户可在自己的vhost创建exchange/queue等
Connection:publisher/consumer和broker之间的tcp连接
channel:作为轻量级的connection极大减少操作系统建立tcp connection的开销
exchange:message到达broker的第一站,根据分发规则,查询表中的routing key,分发消息到queue中,常用类型有direct(point-to-point),topic(publish-subscribe)and fanout(multicast 多路传播)
queue:消息最终被送到这里等待被consumer取走
binding:exchange和queue之间的虚拟连接,binding中可以包含routing key,binding信息被保存到exchange中查询表中,用于message的分发依据

rabbitmq提供的六种工作模式:简单模式,work queues,publish/subscribe发布订阅模式,routing路由模式,topics主题模式,rpc远程调用模式(不常用)
jms:java消息服务应用程序接口,是一个Java平台中关于消息中间件的api

rabbitmq安装

安装亲测有效

rabbitmq简单实现

简单实现 基本实现

rabbitmq工作模式

工作模式就是不同的消息分发方式
1.hello world 模式就是生产消费者模式
在这里插入图片描述

2.work queues工作队列模式
在这里插入图片描述

多个消费端共同消费一个队列中的消息,常用于对于任务过重或任务过多情况使用工作队列可以提高任务处理的速度,各个消费端之间是竞争关系(存在负载均衡和公平模式)
3.pub/sub订阅模式
在这里插入图片描述
在订阅模式中,多了一个exchange交换机的角色
p:生产者,c:消费者,queue:消息队列,exchange:交换机(X)
交换机负责将某个消息交给某个队列或者某些队列,这取决于exchange的类型
fanout:广播,direct:定向,topic:通配符
exchange只负责转发消息,不具备存储消息的能力,因此没有任何队列与exchange绑定或者符合路由规则的队列时时,消息就会丢失
4.routing路由工作模式
在这里插入图片描述

队列与交换机的绑定,不能是任意绑定了,而是要指定一个routing(路由key)
消息发送方在exchange发送消息时,必须指定消息的routingkey
exchange不再是把消息交给每一个绑定的队列,而是根据消息的routingkey进行判断,只有队列的routingkey与消息的routingkey完全一致时才会收到消息
5.topics通配符模式
在这里插入图片描述

  • 表示一个单词,#表示一个或零个单词

springboot整合rabbitmq

参考步骤亲测有效

猜你喜欢

转载自blog.csdn.net/wangjunlei666/article/details/129175804