MQ全称为Message Queue,消息队列是一种应用程序对应用程序的通信方式.应用程序通过读写初入队列的消息(针对应用层序的数据)来通信,而无需朱勇连接来连接他们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过 直接调用彼此来通信.直接调用通常是用于注入远程过程调用的技术,排队指的是应用程序通过队列来通信,队列的使用出去了接受和发送引用程序同时执行的要求.
MQ的特点
MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息MQ和JMS类似.但是不同的是JMS是java消息中间件服务的一个标准API定义.而MQ则是遵循了AMQP协议的具体实现和产品
使用场景
在项目中,将一些无需及时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大节省了服务器请求响应时间,从而提高了系统的吞吐量.
在实际开发中消息队列一般用来应对数据库的高并发,当数据库的更新操作达到数据库的峰值后会产生数据库宕机的现象,引入消息队列后可以解决"数据库的更新并发压力",从而导致数据库在高并发的情况下没有宕机的风险.可以让后台数据库的安全得到保障,让后台的整个架构性能至少提高30%.
因为数据库的处理有一定的峰值,使用队列平衡这样的关系,理论上消息队列的队列是无限的.
1.1.1 安装rabbitMQ
rabbitMQ运行环境:
1. 关闭防火墙
2. 新建文件夹 mkdir rabbitmq
说明:安装rabbitMQ
1.1.1 导入配置文件
说明:
将rabbitMQ中的配置文件拷贝后修改
/usr/share/doc/rabbitmq-server-3.6.1/rabbitmq.config.example.将文件名称改为
rabbitmq.config.之后修改第64行将%%去掉即可
将修改后的文件导入/etc/rabbitmq/
1. 编辑rabbitMQ
1. 启动rabbitMQ
service rabbitmq-server start 启动
service rabbitmq-server stop 停止
service rabbitmq-server restart 重启
1. rabbitMQ的端口号
A.15672 rabbitMQ控制台端口 guest用户名和密码
B.5672 客户端连接rabbitMQ的端口
1.1.1 控制台说明
.视图
1. Channels
说明:它是链接rabbitMQ的唯一通道.
2. Exchanges
交换机:可以让消息发往指定的队列中
3. queues
队列.在消息队列中可以有无数个队列.
如果控制台出现消息没有被消费unacked不为0.这时队列阻塞.需要将队列手动删除
1.1.1 用户权限设定
1. 定义用户
1. 定义虚拟主机
说明:自己维护的队列的全部内容.包含路由/交换机/队列
命名:/jt
1. 为用户分片虚拟主机
最终结果: