rabbitMQ安装
前提
Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang;下载地址:windows 环境
http://www.erlang.org/downloads(erlang)
http://www.rabbitmq.com/install-windows.html (rabbitmq windows)
环境配置:
安装好erlang ,需要配置系统环境变量:
ERLANG_HOME:erlang 安装根目录
Path:%ERLANG_HOME%\bin;%RABBITMQ_SERVER_HOME%\bin;
rabbitmq安装完成开启插件
rabbitmq_managemen是管理后台的插件、我们要开启这个插件才能通过浏览器访问登录页面;
进入rabbitmq 安装目录下找到sbin目录下:rabbitmq-plugins enable rabbitmq_managemen;开启后台管理;
rabbitmq-server start (服务启动)
RabbitMq 的使用
作用:异步、流量削峰(缓冲)、应用解耦(系统拆分)
消息投递服务,消息包含两部分内容:有效载荷(payload)和标签(label),发后即忘(fire-and-forget)单向通信方式
1.使用信道传输数据,信道是建立在真实tcp连接内的虚拟连接,每条tcp连接上信道是无限制的。解决并发开销问题
2.消息分发,以round-robin循环方式发送给消费方
3.消息路由:交换器、路由、绑定 消息发布到交换器,通过队列路由键绑定队列到交换器,消息到达交换器后,rabbitMq将消息路由键与队列路由键匹配,然后投递到相应队列
direct:如果路由键完全匹配,消息就被投递到相应的队列
fanout:如果交换器收到消息,将会广播到所有绑定的队列上
topic:可以使来自不同源头的消息能够到达同一个队列 # 表示一个或多个 key.# 匹配一个字符 key.
headers:无路由键,通过消息头部匹配(any/all)选择是否投递消息
4.消息持久化:设置交换器/队列属性 durable=true;
如果消息想要从Rabbit崩溃中恢复,那么消息必须:
在消息发布前,通过把它的 “投递模式” 选项设置为2(持久)来把消息标记成持久化
将消息发送到持久交换器
消息到达持久队列
容灾恢复,从日志文件重播
5.ACK --confirm 确认机制—通过信道监听返回实现异步操作
mandatory和immediate是AMQP协议中basic.pulish方法中的两个标志位,
mandatory:针对队列,路由不到队列及投递不到队列,则返回给生产者
immediate:针对消费者,及时通信,否则basic.return 返回给生产者(高版本不在使用,利用tts取代)