一、参考资料

RabbitMQ官网

RabbitMQ Tutorials

Linux下安装RabbitMQ(亲测成功)

rabbitmq的web管理界面无法使用guest用户登录

Celery 全面学习笔记

使用 django环境运行单独命令,django项目中 Rabbitmq的使用,django中使用Rabbitmq监听端进行阻塞监听

二、相关介绍

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器端是用Erlang语言编写的,支持多种客户端,用于分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

1. 消息队列处理流程

耗时任务放入消息队列中。

  1. 接收这个任务的请求;
  2. 将这个任务添加到队列中;
  3. 立即返回「操作成功,正在后台处理」的字样;
  4. 后台消费这个队列,执行这个任务

三、常用操作

1. 安装rabbitMq

Ubuntu16.04 安装RabbitMQ

django+celery+ RabbitMQ实现异步任务最完整教程

1.1 安装erlang依赖库

rabbitMq需要erlang语言的支持,所以就先安装erlang。

sudo apt-get install erlang-nox

1.2 安装rabbitMq

sudo apt-get update
sudo apt-get install rabbitmq-server

2. rabbitmq-server相关

# 启动服务
systemctl start rabbitmq-server# 关闭服务
systemctl stop rabbitmq-server# 重启服务
systemctl restart rabbitmq-server# 查看服务状态
systemctl status rabbitmq-server# 启动服务
rabbitmq-server

3. RabbitMQ配置信息

RabbitMQ有一套默认的配置,能够满足日常开发需求,如果需要修改,可根据自己的需求创建一个配置文件。

sudo gedit /etc/rabbitmq/rabbitmq.conf

配置文件示例
https://rabbitmq.com/configure.html

配置说明
https://www.rabbitmq.com/configure.html#config-items

4. rabbitmqctl相关

4.1 查看Rabbit的状态

cd /usr/lib/rabbitmq/bin/
sudo ./rabbitmqctl status

4.2 修改rabbitmqctl文件

sudo gedit rabbitmqctl
HOME=/var/lib/rabbitmq

4.3 添加虚拟环境

sudo rabbitmqctl add_vhost vhost

4.4 查看RabbitMQ的情况

ps -ef|grep rabbit

5. Management控制台相关

5.1 启用控制台

# 默认操作命令路径位置
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.10/sbin# 启用控制台
rabbitmq-plugins enable rabbitmq_management
或者
sudo ./rabbitmq-plugins enable rabbitmq_management# 重启服务
service rabbitmq-server restart

5.2 查看web管理器

浏览器访问:http://127.0.0.1:15672

5.3 账号密码登录

账号:guest
密码:administrator

6. 用户管理相关

6.1 管理员用户

RabbitMQ有一个默认的用户"guest",该用户默认只能通过本机访问,要让其他机器(局域网)可以访问,需要创建一个新用户,并为其分配权限,请参考下文:用户角色相关、用户权限相关。

账号:guest
密码:administrator

6.2 查看用户

sudo rabbitmqctl list_users

6.3 添加用户

# Username为用户名,Password为用户密码
sudo rabbitmqctl add_user Username Password

6.4 删除一个用户

sudo rabbitmqctl delete_user Username

6.5 修改密码

sudo rabbitmqctl change_password guest administrator

7. 用户角色相关

按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
(1) 超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

(3) 策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容

(4) 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

7.1 设置用户角色

# User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)
rabbitmqctl set_user_tags User Tag

7.2 给用户分配administrator 超级管理员角色

# Username为用户名,administrator为超级管理员角色
sudo rabbitmqctl set_user_tags [Username] administrator

7.3 给同一用户设置多个角色

rabbitmqctl set_user_tags hncscwc monitoring policymaker

8. 用户权限相关

用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中"How permissions work"部分。

8.1 设置用户权限

rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP

8.2 设置用户拥有所有权限

rabbitmqctl set_permissions -p / [User] ".*" ".*" ".*"

8.3 设置用户在虚拟环境下拥有所有权限

sudo rabbitmqctl set_permissions -p vhost myuser ".*" ".*" ".*"

8.4 查看(指定hostpath)所有用户的权限信息

rabbitmqctl list_permissions [-p  VHostPath]

8.5 查看用户的权限信息

rabbitmqctl list_user_permissions User

8.6 清除用户的权限信息

rabbitmqctl clear_permissions [-p VHostPath] User

9. python操作rabbitmq

python使用pika操作rabbitmq总结(一)

RabbitMQ文档

Introduction to Pika

python 使用 RabbitMQ

python 连接操作rabbitMQ 主要是使用pika库,Pika是用于Python的RabbitMQ(AMQP 0-9-1)客户端库。

pip install pika

10. rabbitmq集群

Ubuntu 安装rabbitmq集群

四、FAQ

Q:ERROR: node with name "rabbit" already running on "localhost".

ERROR: node with name “rabbit” already running on "localhost"解决方法

解决办法:
重复输入指令sudo rabbitmqctl status
sudo rabbitmqctl stop
rabbitmq-server

Q:rabbitmq登录失败

错误原因:
账号密码错误解决方案:
1. 查看rabbitmq用户
sudo rabbitmqctl list_users2. 修改密码
sudo rabbitmqctl change_password guest administrator

Q:pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)

错误原因:
端口错误
我将port写成了15672,rabbitmq需要通过端口5672连接,而不是15672解决方法:
port = 15672
改为
port = 5672

Q:TypeError: basic_consume() got multiple values for argument 'queue'

TypeError: basic_consume() got multiple values for argument ‘queue’

错误原因:
API接口的参数发生更改解决方法:
channel.basic_consume(callback, queue=‘celery’, no_ack=True)
改为
channel.basic_consume(‘celery’,callback, False)

RabbitMQ消息队列详细教程相关推荐

  1. RabbitMQ消息队列系列教程(一)认识RabbitMQ

    摘要 RabbitMQ是最为流行的消息中间件,是处理高并发业务的利器.本系列教程,将跟大家一起学习RabbitMQ. 目录 RabbitMQ是什么? RabbitMQ的特点是什么? 一.RabbitM ...

  2. thinkphp5的消息队列详细教程

    消息队列的概念.原理和场景 在高并发的时候,程序往往无法做到及时的处理.我们引入一个中间的系统,来进行分流和减压. 所以从本质上讲:消息队列就是一个队列结构的中间件.也就是说,你把消息和内容放入这个容 ...

  3. (四)RabbitMQ消息队列-服务详细配置与日常监控管理

    (四)RabbitMQ消息队列-服务详细配置与日常监控管理 原文:(四)RabbitMQ消息队列-服务详细配置与日常监控管理 RabbitMQ服务管理 启动服务:rabbitmq-server -de ...

  4. 初探 RabbitMQ 消息队列

    初探 RabbitMQ 消息队列 rabbitmq基础概念常见应用场景导入依赖属性配置具体编码定义队列实体类控制器消息消费者主函数测试总结说点什么 SpringBoot 是为了简化 Spring 应用 ...

  5. php中rabbitmq消息乱码,PHP实现RabbitMQ消息队列(转)

    本篇文章给大家带来的内容是关于PHP和RabbitMQ实现消息队列的完整代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 先安装PHP对应的RabbitMQ,这里用的是 php_a ...

  6. RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

    <===  RabbitMQ消息队列(三):任务分发机制 上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message delive ...

  7. RabbitMQ消息队列(一)《Java-2021面试谈资系列》

    RabbitMQ RabbitMQ消息队列 一.中间件 1.什么是中间件 2.中间件技术及架构概述 3.消息中间件 1.消息中间件的分布式架构 2.消息中间件使用场景 3.常见的消息中间件 4.消息中 ...

  8. thinkphp5 redis消息队列简单教程

    thinkphp5 redis消息队列简单教程 1.1 安装 thinkphp-queue composer install thinkphp-queue 1.2 搭建消息队列的存储环境 使用 Red ...

  9. .NET为什么推荐它作为RabbitMQ消息队列的首选开发工具

    [前言] 自2022年末推出此工具以来,相关文章已被圈内顶尖的几家.NET头条号转载,而且短短数月,已有超100个团队/个人开发者使用它来操控RabbitMQ消息队列,反响可谓十分火爆.故本次经典重现 ...

最新文章

  1. Design Pattern - Builder(C#)
  2. C++描述的位运算总结
  3. Android Activtity Security
  4. Linux下安装LoadRunner LoadGenerator
  5. OS酱:“哎呀内存太小了,人家又缺页了!”
  6. Hystrix在网关Zuul使用中遇到问题
  7. PoE交换机不供电了该怎么办?
  8. [react] 写出React动态改变class切换组件样式
  9. Python中的Dask数组
  10. Element穿梭框Transfer与进度条组件绑定
  11. 免费的JavaScript书籍资源
  12. 浅谈对于业务中台的理解
  13. 自学前端第一天:认识前端工程与网页
  14. 如何使用Graylog来收集日志?
  15. 人力资源数据分析师前景_人力资源数据分析师——大数据下的精英岗位
  16. 看完南京前11年房价,我哭了!今年实在太特么狠了
  17. access设计视图
  18. WIN7/10定时关机或重启命令行脚本代码集锦
  19. 骚话--大部分来源于抖音评论
  20. 计算机专业的学习资料与个人对本专业的理解

热门文章

  1. iphone计算机输入文字,10个鲜为人知的iPhone实用技巧 全知道的算我输!
  2. 微信授权demo php,PHP微信公众平台oauth2.0网页授权登录类的封装demo
  3. 为您揭秘当今直播源码为何如此火爆
  4. c++ 11 多线程支持 (std::packaged_task)
  5. 微信小程序:宝宝起名神器微信小程序
  6. css解决transform 方法字体抖动
  7. python 一个简单的网站采集
  8. ServiceNow CSA管理员考试(ServiceNow Fundamentals (On Demand) Paris)
  9. git gc error: failed to run repack message
  10. 企业微信Windows版本调试