1、rabbitmq理论
1.1、什么叫消息队列
消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
1.2、消息队列通信方式
消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在,这样能大大平台解耦能力,将每一个功能都具体到模块化操作
大致如图
1.3、消息队列大致术语
Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息的载体,每个消息都会被投到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。
Producer:消息生产者,就是投递消息的程序.
Consumer:消息消费者,就是接受消息的程序.
Channel:消息通道,在客户端的每个连接里,可建立多个channel.
大概如图
2、安装
rabbitmq是基于erlang研发的,所以我们需要先安装erlang,官网安装
需要先更新epel源, 我们这里使用 centos 7
Host] # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Host] # yum -y install erlang socat
Host] # yum -y install http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
Host] # systemctl start rabbitmq-server
需要 rabbitmqctl status 可查看rabbitmq的状态
Host] #rabbitmqctl status
Status of node rabbit@docker2
[{pid,5976},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.6.15"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.15"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.15"},
{inets,"INETS CXC 138 49","5.9.8"},
{rabbitmq_web_mqtt,"RabbitMQ MQTT-over-WebSockets adapter","3.6.15"},
{rabbitmq_mqtt,"RabbitMQ MQTT Adapter","3.6.15"},
{amqp_client,"RabbitMQ AMQP Client","3.6.15"},
{cowboy,"Small, fast, modular HTTP server.","1.0.4"},
{cowlib,"Support library for manipulating Web protocols.","1.0.2"},
{rabbit,"RabbitMQ","3.6.15"},
{mnesia,"MNESIA CXC 138 12","4.11"},
{rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",
"3.6.15"},
查看rabbitmq-server所加载的模块
2.1、web管理界面
# 开启rabbitmq web界面
Host]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management
创建一个管理员用户
Host]# rabbitmqctl add_user admin 111111
Creating user "admin"
Host]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator]