RabbitMQ消息队列(一)
1.消息队列使用场景
1.1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端,如图1
1.2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间,如图2
1.3)引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如图3
2.消息队列
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。
消息队列是一个程序写入数据到队列中,另一个程序从队列中获取消息,并且通信通过RPC调用,可以传递java对象,方便操作.
2.1)缺点
增加了复杂度
可靠性降低
2.2)消息队列的产品,如图4
2.3)RabbitMQ特点
- 高可用,能搭建集群服务器。
2.可扩展,有大量插件 - 有消息确认机制
4.有持久化机制,可靠性高。 - 开源
3安装RabbitMQ
执行rpm命令安装rabbitMQ
RPM是Red-Hat Package Manager(RPM软件包管理器)的缩写,Red-hat是一种Linux,RPM是用来安装Linux软件的。
rpm -ivh rabbitmq-server-3.6.1-1.noarch.rpm
3.1)安装rabbitMQ web后台管理
1.查看插件
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.1/plugins
ls
#有management插件,这个插件是后台管理网页
rabbitmq_management-3.6.1.ez
3.2)安装插件的命令
cd /usr/sbin
ls ra*
#用vim打开rabbitmq-plugins,是个脚本程序
vim rabbitmq-plugins
//下面命令安装后台管理插件,必须执行
[root@localhost sbin]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to rabbit@localhost... failed.
* Could not contact node rabbit@localhost.
Changes will take effect at broker restart.
* Options: --online - fail if broker cannot be contacted.
--offline - do not try to contact broker.
3.3)启动rabbitMQ
# cd /usr/sbin
# ls ra*
service rabbitmq-server start
3.4)在虚拟机中登录
单击火狐浏览器,
在虚拟机中用localhost:15672能访问,能登录
用户名和密码:guest,登录成功后如图- 66所示。
五种模式总结
简单simple:一个消费者
工作work:多个消费者,每个消费者处理的信息是不一样的,用在高并发
订阅fanout:每个消费者得到信息一样的,
路由direct: 每个消费者得到信息不一样的,信息有routingkey,消费者执行select where routingkey=mobile
主题topic:消息分类,消费者取消息时用mobile.*能取到routingKey为mobile.cart和mobile.order的信息。