消息队列
1.概括
1.1消息队列是什么
queue:队列
实现排队,先后顺序的数据结构
message:消息
队列中存放的数据,将自字符串封装的消息对象
1.2消息队列的作用
❤解耦
代码,或者系统通信都可能存在强耦合的关系,可以通过消息队列第三方技术处理强耦合,解耦
❤消峰(消除并发峰值)
请求到达系统的方法上限,超过上限的请求不丢失不拒绝.
通过引入消息队列可以解决这2个问题
2.Rabbimtq
2.1介绍
企业级别,常见的一种开源消息中间件.实现了sun公司定义的AMQP高级消息队列协议.
AMQP: advanced message queue protocal. 一套接口,实现接口的消息队列可以做到性能较高.
2.2结构
客户端:能连接上rabbitmq的所有终端(代码语言.软件程序),都叫做rabbitmq的客户端.
生产者:消息发送端
消费者:接收消息端
无角色:唯一功能定义rabbitmq组件
服务端:rabbitmq启动的消息代理服务器
结构:
连接组件
交换机组件
队列组件
粗粒度连接结构:
细粒度核心组件
连接:客户端可以获取的连接通道,通过连接通道才可以和服务端进行消息的逻辑处理的沟通,发送消息,监听消费,声明组 件
长连接:基于TCP/ip封装的,创建和销毁都占用大量资源,不易频繁创建销毁.
短连接:基于长连接创建的短连接,可以频繁创建销毁,速度很快,适合用来通信管理.
交换机:exchange,在客户端使用rabbitmq时很有可能会通过一次消息传递并发发送到多个后端队列中,对于客户端并发能力就有稳定的高性能的要求.如果这种并发发送消息交给客户端,由于客户端的语言不同,性能不同,并发不同,导致rabbitmq技术使用不稳定.引入交换机,只允许生产端发送消息时交给交换机.由交换机来处理后续发送队列并发逻辑.exchange是有erlang编写的.
队列组件:queue
真正存储消息对象的容器.一个rabbitmq中可以有多个队列,但是每个队列必须绑定一个交换机使用.为了防止声明队列时,某个队列忘记了绑定,错误的没有绑定交换机,rabbitmq提供了一个(AMQP default)交换机,每个声明的队列必定使用队列名称作为路由key绑定这个默认交换机.
3.rabbitmq的启动和控制台登录
3.1服务器启动rabbtimq
#service rabbitmq-server start
start启动
stop停止
restart重启
3.2登录控制台
控制台是web应用,可以通过http协议访问