RabbitMQ初识

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31425127/article/details/81781574

1 MQ

MQ (Message Queqe)我们可以理解为消息队列,队列我们可以理解为管道。以管道的方式做消息传递。

应用场景:

1.其实我们在双11的时候,当我们凌晨大量的秒杀和抢购商品,然后去结算的时候,就会发现,界面会提醒我们,让我们稍等,以及一些友好的图片文字提醒。而不是像前几年的时代,动不动就页面卡死,报错等来呈现给用户。 
在这业务场景中,我们就可以采用队列的机制来处理,因为同时结算就只能达到这么多。

2.在我们平时的超市中购物也是一样,当我们在结算的时候,并不会一窝蜂一样涌入收银台,而是排队结算。这也是队列机制。

即:一个接着一个的处理,不能插队。
参考链接:https://www.sojson.com/blog/48.html

消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行–它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。MQ主要作用是接受和转发消息。你可以想想在生活中的一种场景:当你把信件的投进邮筒,邮递员肯定最终会将信件送给收件人。我们可以把MQ比作 邮局和邮递员。

MQ和邮局的主要区别是,它不处理消息,但是,它会接受数据、存储消息数据、转发消息。

2 AMQP

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

3 RabbitMQ

1.1 简介

RabbitMQ中主要有三种关系:生产者、消费者、队列。
生产者用来发送消息,消费者用来接受消息,队列用来存储消息。
关于这三者之间的详细说明,可以看下面这个RabbitMQ教程,虽然是用C#写的,但我觉得还挺好懂的,地址如下:
http://www.cnblogs.com/PatrickLiu/tag/RabbitMQ/
Rabbitmq服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。这里主要讲讲控制台的一些命令操作。

1.2 用户管理

$ rabbitmqctl list_users   //列出所有用户
$ rabbitmqctl add_user username password   //添加用户
$ rabbitmqctl change_password username newpassword   //修改用户密码
$ rabbitmqctl delete_user username   //删除用户

1.3 用户角色

最小权限角色  none
管理员角色   management
决策者  policymaker
监控  monitor
超级管理员  administrator

1.4 权限管理

$ rabbitmqctl list_permissions [-p vhostpath]  //列出所有用户权限
$ rabbitmqctl list_user_permissions username   //查看用户权限
$ rabbitmqctl set_permissions [-p vhostpath] username regexp regexp regexp  //设置用户权限
//$ rabbitmqctl set_permissions -p / jqq '.*' '.*' '.*'    三个'.*'分别代表了conf权限,read权限与write权限
$ rabbitmqctl clear_permissions [-p vhostname] username //清除用户权限

1.5 常用服务命令

$ (service) rabbit-service start   //启动服务
$ rabbit-service stop   //关闭服务
$ rabbitmqctl list_queues  //查看所有队列
$ rabbitmqctl reset    //清除所有队列
$ rabbitmqctl stop_app   //关闭应用
$ rabbitmqctl start_app  //打开应用,配合关闭命令达到清空队列的目的
$ rabbitmqctl status  //查看运行信息
$ rabbitmq-plugins enable rabbitmq_management   //启动rabbitmq的图形管理界面,这个操作必须重启rabbitmq, 然后在web中 http://127.0.0.1:15672 用户名和密码都是guest guest。如果局域网无法访问设置防火墙过滤规则或关闭防火墙。  
$ rabbitmq-plugins disable rabbitmq_management   //关闭rabbitmq的图形管理界面
展开阅读全文

没有更多推荐了,返回首页