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

目录

一、什么是消息队列

二、什么是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 pikaconnection = 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 pikacredentials = 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 pikacredentials = 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.hqwc.cn/news/696960.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙ArkUI开发:常用布局【弹性布局方向图】

弹性布局方向图 Flex({ direction: FlexDirection.Row }) FlexDirection.Row(默认值):主轴为水平方向,子组件从起始端沿着水平方向开始排布FlexDirection.RowReverse:主轴为水平方向,子组件从终点端沿着F…

物联网设计竞赛_3_Jetson Nano连接摄像头

ls /dev/video* 查看是否有摄像头 camorama 开启摄像头 关闭摄像头用&#xff1a; ctr c结束进程 若有camorama被启动用ps aux 或者 ps aux l grep camorama 找到对应进程用 kill -9 <PID>杀死进程再启动 必要的时候也能重启系统再试试&#xff1a; shutdown -r …

Java入门基础学习笔记21——Scanner

在程序中接收用户通过键盘输入的数据&#xff1a; 需求&#xff1a; 请在程序中&#xff0c;提示用户通过键盘输入自己的姓名、年龄、并能在程序中收到这些信息&#xff0c;怎么解决&#xff1f; Java已经写好了实现程序&#xff0c;我们调用即可。 API&#xff1a;Applicat…

基于Springboot的大学生平时成绩量化管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的大学生平时成绩量化管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三…

LVS + Keepalived 高可用群集

一、准备环境 主keepalived&#xff1a;172.168.1.11 lvs 备keepalived&#xff1a;172.168.1.12 lvs web1&#xff1a;172.168.1.13 web2&#xff1a;172.168.1.14 vip&#xff1a;172.168.1.100 客户机访问 关闭防火墙 二、配置 主keepalived 服务器 1. 安装…

tsconfig 备忘清单

前言 ❝ Nealyang/blog0 使用 ts 已多年&#xff0c;但是貌似对于 tsconfig 总是记忆不清&#xff0c;每次都是 cv 历史项目&#xff0c;所以写了这篇备忘录&#xff0c;希望能帮助到大家。 本文总结整理自 Matt Pocock 的一篇文章3&#xff0c;加以个人理解&#xff0c;并做了…

三极管 导通条件

一、三极管理解 三极管是电子行业常用的元器件之一&#xff0c;他是一种电流型控制的器件&#xff0c;他有三种工作状态&#xff1a;截止区&#xff0c;放大区、饱和区。当三极管当做开关使用时&#xff0c;他工作在饱和区。下面简短讲解三极管作为开关使用的方法&#xff0c;只…

IMDB的电影评论数据pytorh使用lstm

使用lstm对IMDB的电影评论数据进行情感分析&#xff08;pytorch代码&#xff09; 接下来让我们看看如何使用pytorch实现一个基于长短时记忆网络的情感分析模型。在飞桨中&#xff0c;不同深度学习模型的训练过程基本一致&#xff0c;流程如下&#xff1a; 数据处理&#xff1…

数字水印 | Arnold 变换的 Python 代码实现(灰度图版)

效果 将彩色图转换为灰度图&#xff0c;并进行 A r n o l d \mathsf{Arnold} Arnold 置乱和还原。 代码 import cv2 import numpy as np from matplotlib import pyplot as pltdef arnold(img, shuffle_times, a, b):r, c, d img.shapeimg img[:, :, 0]p np.zeros((r, c),…

基于光纤技术的新能源汽车电池安全监测--FOM²系统

为什么要进行动力电池包的温度监测&#xff1f; 新能源电动汽车的动力电池包的工作温度&#xff0c;不仅会影响电池包性能&#xff0c;而且直接关系到车辆安全。时有发生的新能源汽车电池包起火事件&#xff0c;对电池包、冷却系统以及电池管理系统&#xff08;BMS&#xff09…

从编辑器角度来理解定义和声明

报错,在函数里面(包括int main函数)extern声明会和定义冲突 下面这种写法就很ok 静态变量的反汇编 #include<iostream> using namespace std; extern int c; int ma

C++常见十种排序方式

目录 前言 1、选择排序 介绍 参考代码 2、冒泡排序 介绍 参考代码 3、插入排序 介绍 参考代码 4、希尔排序 介绍 参考代码 5、快速排序 介绍 参考代码 6、并归排序 介绍 参考代码 7、堆排序 介绍 参考代码 8、基数排序 介绍 参考代码 9、计数排序 介绍 参考代…