RabbitMQ 入门
本文适合初学者阅读,以及已经熟悉的人回顾基础知识。
基础介绍
什么是RabbitMQ
- RabbitMQ是一种消息队列软件,称为 消息代理 或 队列管理器。 简单地说; 它是一个软件,可以定义队列,应用程序可以连接到队列并将消息传输到队列。
- 消息可以包括任何类型的信息。例如,它可以有关于应该在另一个应用程序(可能在另一个服务器上)启动的进程/任务的信息,或者它可能只是一个简单的文本消息。队列管理器软件存储消息,直到接收应用程序连接并从队列中取消消息。接收应用程序然后以适当的方式处理该消息。
- RabbitMQ是一个消息代理:它接受和转发消息。您可以将其视为邮局:当您将要发布的邮件放在邮箱中时,您可以确定邮件先生或Mailperson女士最终会将邮件发送给您的收件人。在这个比喻中,RabbitMQ是邮箱,邮局和邮递员。
- RabbitMQ和邮局之间的主要区别在于它不处理纸张,而是接受,存储和转发二进制blob数据 - 消息。
blobs 在开源软件中,加载到内核中的非自由对象文件
。。还是不知道是什么东西
简而言之,rabbitmq就是消息的容器,你生产一个消息(消息可以是一个json类型的Stirng),将消息放到rabbitmq上面。需要消费这条消息的人从rabbitmq上面取得这个消息进行处理。
什么时候用
消息队列允许Web服务器快速响应请求,而不是被迫在现场执行资源繁重的过程。当您希望将消息分发给多个收件人以供消费或平衡工作人员之间的负载时,消息队列也很好。
基本概念介绍
- Producer 发送消息的应用程序
- Consumer 接收消息的应用程序。
- Queue 存储消息的缓冲区。
- Message 通过RabbitMQ从生产者发送给消费者的信息
- Connection 连接是应用程序和RabbitMQ代理之间的TCP连接
- Channel 通道是连接内的虚拟连接。当您从队列中发布或使用消息时 - 它们都是通过通道完成的。
- Exchange 接收来自生产者的消息,并根据交换类型定义的规则将其推送到队列。为了接收消息,需要将队列绑定到至少一个交换机。
- Binding 绑定是队列和交换之间的链接。
- Routing key 路由密钥是交换机查看的密钥,用于决定如何将消息路由到队列。路由密钥就像 消息的 地址。
- AMQP AMQP(高级消息队列协议)是RabbitMQ用于消息传递的协议
- Users 可以使用给定的用户名和密码连接到RabbitMQ。可以为每个用户分配权限,例如在实例中读取,写入和配置权限的权限。还可以为用户分配特定虚拟主机的权限。
- Vhost, virtual host 虚拟主机提供了一种使用相同RabbitMQ实例隔离应用程序的方法。不同的用户可以对不同的vhost和队列具有不同的访问权限,并且可以创建交换,因此它们仅存在于一个vhost中。
RabbitMQ的单机搭建 for linux
本示例基于
- CentOS Linux release 7.5.1804 (Core)
- YUM –version 3.4.3
- 使用root安装,rabbitmq用户运行rabbitmq
- 使用默认的rabbitmq配置文件
安装
使用root用户登录
# 查询是否有rabbitmq包以及包的版本
yum search rabbitmq
yum list | grep rabbitmq-server
# 安装rabbitmq
yum install -y rabbitmq-server
# 查找安装的服务
systemctl list-unit-files | grep rabbitmq
# 安装
yum install -y rabbitmq
运行
使用root用户登录
rabbitmq 在运行时,会新建一个rabbitmq系统用户。rabbitmq由rabbitmq用户运行。
# 默认情况下,在安装RabbitMQ服务器软件包时,服务器不会作为守护程序启动。在系统引导时,默认情况下以管理员身份运行时启动守护程序,使服务自启
systemctl enable rabbitmq-server.service
# 启动rabbitMQ rabbitmq进程所属用户为rabbitmq
systemctl start rabbitmq-server
# 查看rabbitMQ 状态
rabbitmqctl status
操作
当服务器首次开始运行会初始化一个账户
- 一个名为/的虚拟主机
- 名为guest的用户,其默认密码为 guest,授予对 / virtual host的完全访问权限
为了安全起见,要删除这个默认用户,并新建使用的用户。(命令参考)
删除guest用户
rabbitmqctl delete_user guest
新建用户 admin 密码为 admin 此用户为管理员用户。需要新增用户、虚拟机等信息均可通过此用户操作rabbitmq web-ui
rabbitmqctl add_user admin admin
启用web管理界面
==NOTE: 此操作需要开放15672 端口==
rabbitmq-plugins enable rabbitmq_management
访问web-ui
访问 http://你安装的机器的ip:15672/
使用admin用户登录。
知识点扩展
参考链接
http://www.rabbitmq.com/tutorials/tutorial-one-python.html
https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html