【RabbitMQ】消息队列 - RabbitMQ的使用记录

news2024/11/27 18:45:57

目录

一、什么是消息队列

二、什么是RabbitMQ

三、安装RabbitMQ

3.1 安装Erlang环境

3.2 安装RabbitMQ

3.3 打开服务管理界面

3.4 常用命令

四、Python示例代码

4.1 发送数据

4.2 接收数据


一、什么是消息队列

        消息队列(Message Queue)是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接收消息,并且不需要直接连接到对方。

        消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串也可以更复杂,可能包含嵌入对象。

        队列(Queue)可以说是一个数据结构,可以存储数据,先进先出。

二、什么是RabbitMQ

        一款基于AMQP(高级消息队列协议)用于软件之间通信的中间件,由Rabbit科技有限公司开发,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

        Rabbitmq四大核心:生产者、消费者、队列、交换机

        AMQP协议是一种二进制协议,它定义了一组规则和标准,以确保消息可以在不同的应用程序和平台之间传递和解释。AMQP协议包含四个核心组件:消息、交换机、队列、绑定

三、安装RabbitMQ

3.1 安装Erlang环境

        先安装Erlang环境,下载地址:Downloads - Erlang/OTP。下载Erlang环境时需注意与Rabbitmq版本匹配,版本对应关系查询网址:Erlang Version Requirements | RabbitMQ

        这里下载的Erlang版本为“26.2.5”

下载后是一个可执行文件

以管理员身份运行,然后一直点击“Next”

安装好后需要在环境变量中设置一下:

3.2 安装RabbitMQ

根据版本对应关系, “26.2.x”版本的Erlang对应3.13版本的RabbitMQ

下载地址:Installing on Windows | RabbitMQ

 下载后直接安装(不要安装在包含中文和空格的目录下!安装后window服务中就存在rabbitMQ了,并且是启动状态。

3.3 打开服务管理界面

RabbitMQ安装完成后,执行以下步骤打开服务管理界面

首先找到RabbitMQ安装目录下的“sbin”文件夹

双击rabbitmq-server.bat来重启服务

如果遇到端口占用情况可以尝试找到占用端口的应用程序的PID,然后杀死

浏览器输入http://127.0.0.1:15672 , 即可看到rabbitmq管理界面的登陆页

输入用户名和密码登录,默认都为guest。登陆之后我们可以添加一个用户名和密码

3.4 常用命令

命令需要先cd到“xxx\rabbitmq_server-3.13.2\sbin”路径下再输

(1)启动/停止

rabbitmq-service start/stop

(2)设置用户密码

rabbitmqctl add_user chaochao 123456

(3)设置用户为administrator角色

rabbitmqctl set_user_tags chaochao administrator

四、Python示例代码

4.1 发送数据

如果服务端没有设置密码,使用如下代码即可发送数据

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) # 创建连接
channel = connection.channel()  # 创建channel
channel.queue_declare(queue="test_q1")  # 申明队列
# 往队列发送数据
channel.basic_publish(
    exchange='',
    routing_key='test_q1',  # 消息队列名称
    body='Hello World!'  # 消息内容
)
connection.close()  # 关闭连接

 如果有密码,则需要添加如下部分:

import pika

credentials = pika.PlainCredentials("chaochao","123456")
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1',credentials=credentials)) # 创建连接
channel = connection.channel()  # 创建channel
channel.queue_declare(queue="test_q1")  # 申明队列
# 往队列发送数据
channel.basic_publish(
    exchange='',
    routing_key='test_q1',  # 消息队列名称
    body='Hello World!'  # 消息内容
)
connection.close()  # 关闭连接

如果报错“pika.exceptions.ProbableAccessDeniedError: ConnectionClosedByBroker: (530) "NOT_ALLOWED - access to vhost '/' refused for user 'chaochao'"”如下:

表示服务未对该用户开放相关的权限,如 Virtual Host权限

我们可以输入如下命令设置用户拥有全部权限:

rabbitmqctl set_permissions -p "/" chaochao ".*" ".*" ".*"

设置过后就可以成功发送。

4.2 接收数据

import pika

credentials = pika.PlainCredentials("chaochao","123456")
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1',credentials=credentials)) # 创建连接
channel = connection.channel()  # 创建channel
channel.queue_declare(queue="test_q1")  # 申明队列

def callback(ch, method, properties, body):  # 有消息进队列就执行该函数
    print("Received: %r" % body)

channel.basic_consume(
    queue="test_q1",
    on_message_callback = callback,
    auto_ack=True
)

channel.start_consuming()

参考视频:

https://www.bilibili.com/video/BV1Am4y1z7Tu/?p=2&spm_id_from=pageDriver&vd_source=36a3e35639c44bb339f59760641390a8

03 rabbmitMQ消息安全之ack_哔哩哔哩_bilibili 

参考文章:

RabbitMQ使用教程-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1671025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue:网页icon无法显示

logo文件放在public文件夹下,在html里设置icon。 本地源码运行后发现网页icon无法显示我们设置的logo,而是显示了浏览器默认icon。 这个问题不需要解决,部署后网页icon显示就正常了。

绝地求生PUBG新老艾伦格有什么差别 老艾伦格什么时候回归

复古风格的艾伦格原始地图携带着那些标志性的记忆符号华丽回归,邀请您沉浸于往昔的每一处细节探索中。我们不仅还原了游戏诞生的起点,还在其中巧妙融入现代游戏元素,构筑一座连接昔日与今朝的桥梁,完美融合了经典与创新的游戏体验…

【动态规划四】子序列问题

目录 leetcode题目 一、最长递增子序列 二、摆动序列 三、最长递增子序列的个数 四、最长数对链 五、最长定差子序列 六、最长的斐波那契子序列的长度 七、最长等差数列 八、等差数列划分 II leetcode题目 一、最长递增子序列 300. 最长递增子序列 - 力扣&#xff0…

关于SQL

数据库简介: 数据库分类 关系型数据库模型: 优点:易于维护,可以实现复杂的查询 缺点:海量数据 读取写入性能差,高并发下数据库的io是瓶颈 是把复杂的数据结构归结为简单的二元关系(即二维表…

Linux字符设备驱动设计

Linux字符设备驱动设计 概述 驱动的定义与功能 计算机系统中存在着大量的设备, 操作系统要求能够控制和管理这些硬件, 而驱动就是帮助操作系统完成这个任务。 驱动相当于硬件的接口, 它直接操作、 控制着我们的硬件, 操作系统通…

工作太闲,平常有没有用手机能赚钱的,这里我推荐了4种可月入2000的副业

确实有许多通过手机赚钱的方式,以下是一些常见的方法 1.拍照卖图 如果你有一台相机或智能手机,喜欢拍照,那么可以将自己拍摄的图片上传到网站上,赚取稿费。 2. 做问卷调查 许多公司需要了解消费者的意见,所以会通过…

【XSRP软件无线电】基于软件无线电平台的QPSK频带通信系统设计

目录: 目录: 一、绪论 1.1 设计背景 1.2 设计目的 二、系统总体方案 2.1 专题调研题目 2.2 调研背景 2.3 设计任务解读 2.4 设计原理 2.4.1 原理框图 2.4.2 功能验证 三、软件设计 3.1 程序解读 3.2 程序设计 3.3 仿真结果: 四、程序代码分析…

爬取深圳2024年链家二手房数据,共3000条数据(其他城市也可)

文章目录 专栏导读1.目标2.导入相关库3.获取每个二手房的链接4.获取每个链接中的相关数据5.保存数据6.数据展示 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫…

二叉树OJ刷题

制作不易,三连支持一下吧!!! 文章目录 前言一、相同的树二、单值二叉树三.对称二叉树四.二叉树的前序遍历五.另一棵树的子树六.二叉树遍历总结 前言 前三篇博客我们详细介绍了树形结构,及两种特殊的树:堆和…

【Ubuntu永久授权串口设备读取权限“/dev/ttyUSB0”】

Ubuntu永久授权串口设备读取权限 1 问题描述2 解决方案2.1 查看ttyUSB0权限,拥有者是root,所属用户组为dialout2.2 查看dialout用户组成员,如图所示,普通用户y不在dialout组中2.3 将普通用户y加入dialout组中2.4 再次查看dialout用…

云原生新手和开源教育分论坛 02-技术 or 非技术,参与 Kubernetes 社区丝滑路径【开源贡献】

https://www.kubernetes.dev/https://www.kubernetes.dev/community/community-groups/https://killercoda.com/https://kwok.sigs.k8s.io/https://training.linuxfoundation.cn/ 演讲

pywinauto,一款Win自动化利器!

pywinauto,一款Win自动化利器! 1.安装 pywinauto是一个用于自动化Python模块,适合Windows系统的软件(GUI),可以通过Pywinauto遍历窗口(对话框)和窗口里的控件,也可以控…

NeurIPS‘24 截稿日期逼近 加拿大温哥华邀你共赴盛会

会议之眼 快讯 第38届NeurIPS24(Conference and Workshop on Neural Information Processing Systems)即神经信息处理系统研讨会将于 2024 年 12月9日-15日在加拿大温哥华会议中心举行! NeurIPS 每一年都是全球AI领域的一场盛宴,吸引着来自世界各地的顶…

软件文档-总体测试计划书(Word原件2024)

软件资料清单列表部分文档: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解决…

第九期济南科创生态大会即将盛大开启,为中小企业注入新动能

【头部财经】近日,备受瞩目的第九期济南科创生态大会即将拉开帷幕。本次大会将聚焦科技创新领域,为参会者提供一个交流合作、资源对接的优质平台。 作为一个专为中小企业打造的科技创新交流平台,济南科创生态大会一直致力于促进中小企业的发…

【VTKExamples::Rendering】第七期 TestShadows

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestShadows,并解析接口vtkRenderer,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO …

解决Android手机无法通过蓝牙给win10 PC传送文件

(一)先配对设备,正常配对就可以 (二)打开系统设置,win搜索窗口搜索“设置” (三)搜索“蓝牙” (四)打开“蓝牙和其他设备”,点击“更多蓝牙设置”…

【2024年5月备考新增】】 考前篇(2)《官方平台 - 考生模拟练习平台常用操作(一)》

软考考生常用操作说明 说明:模拟作答系统是旨在让考生熟悉计算机化考试环境和作答方式,模拟作答不保存考生作答 历史记录。考试题型、题量、分值、界面及文字内容以正式考试答题系统为准。 1 如何标记试题、切换试题 2 简答题如何查看历史记录、切换输入法 3 选做题,已作答…

C++下使用Matplotlib-cpp的一些配置

Aconda3安装使用 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/下载 切换清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ con…

自动化测试需知的4项测试工具

一般来说学自动化会建议大家先学selenium,因为最早的时候,自动化就代表selenium,进入测试行业就开始做接口测试,而且现在基本每个公司都需要接口测试。今天就和大家聊一下接口测试的工具。 一、Robot Framework 机器人框架。之所…