消息中间件RabbitMQ02:账号的注册、点对点推送信息

news2025/5/18 3:00:36

一、默认用户登录和账号注册

1.登录

        安装好了RMQ之后,我们可以访问如下地址: 

RabbitMQ Management

        输入默认的管理员密码,4.1.0的管理员账号和密码是:

guest
guest

 2.添加账号

consumer
consumer

添加成功后:

 

角色的对比: 

标签 (中文)标签 (英文)描述
管理Management用户可以访问管理插件。
政策制定者Policymaker用户可以访问管理插件,并管理他们有权访问的虚拟主机(vhosts)的策略和参数。
监听Monitoring用户可以访问管理插件,查看所有连接、通道以及节点相关信息。
管理员Administrator用户可以做监控可以做的所有事情,管理用户、虚拟主机和权限,关闭其他用户的连接,管理所有虚拟主机的策略和参数。

3.添加用户权限

         我们刚刚添加了用户consumer,但是他不具备任何权限,我们可以为他配置权限,先点击进去

 

 

 

 二、HelloWorld入门Demo

1.编写消费者代码并运行

class Program
{
    static async Task Main(string[] args)
    {

        // 01 RabbitMQ 配置
        string hostname = "localhost";  // RabbitMQ 主机名
        string username = "consumer";   // RabbitMQ 账号
        string password = "consumer";   // RabbitMQ 密码
        string queueName = "hello";     // 队列名称,和生产者保持一致
        var factory = new ConnectionFactory() { HostName = hostname, UserName = username, Password = password };

        // 02 创建连接
        using (var connection = await factory.CreateConnectionAsync())
        using (var channel = await connection.CreateChannelAsync())
        {

            // 03 声明一个队列(队列名称,MQ持久化 重启不丢失=true,队列私有化 仅供第一个消费者使用=true,无人使用 自动删除=true ,附加参数)
            await channel.QueueDeclareAsync(queueName, false, false, false, null);

            // 04 创建消费者实例
            var consumer = new AsyncEventingBasicConsumer(channel);

            // 05 设置消息到达时的回调函数(相当于接收消息后,需要执行的方法)
            consumer.ReceivedAsync +=  async (model, ea) =>
            {
                var body = ea.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);//将消息转换为字符串
                Console.WriteLine($"消费者接受了信息:{message}");

                // 处理完消息后手动签收确认消息
                await channel.BasicAckAsync(ea.DeliveryTag, false);
                Console.WriteLine("消息已确认: " + message);
            };

            // 06 启动消费者,开始接收消息(队列名称,需要手动签收消息=false,回调函数)
            await channel.BasicConsumeAsync(queueName, false, consumer);

            Console.WriteLine("消费者可点击Enter退出...");
            Console.ReadLine();
        }
    }
}

此时我们可以观察到,管理网站的变化:

 

2.编写生产者代码并运行 

class Program
{
    static async Task Main(string[] args)  // 将Main方法修改为异步方法
    {
        // 01 RabbitMQ 配置
        string hostname = "localhost";  // RabbitMQ 主机名
        string username = "guest";      // RabbitMQ 账号
        string password = "guest";      // RabbitMQ 密码
        string queueName = "hello";     // 队列名称
        var factory = new ConnectionFactory() { HostName = hostname, UserName = username, Password = password };

        // 02 创建连接
        using (var connection = await factory.CreateConnectionAsync())  // 使用CreateConnectionAsync方法
        using (var channel = await connection.CreateChannelAsync())
        {
            // 03 声明一个队列(队列名称,MQ持久化 重启不丢失=true,队列私有化 仅供第一个消费者使用=true,无人使用 自动删除=true ,附加参数)
            await channel.QueueDeclareAsync(queueName, false, false, false, null);

            // 04 编辑消息内容(存成字节数组形式)
            string message = "Hello, World!";
            byte[] body = Encoding.UTF8.GetBytes(message);

            // 05 发送消息到队列(交换机名称 没用到可为空,队列名称,字节数组形式的消息内容)
            await channel.BasicPublishAsync(string.Empty, queueName, body);
            Console.WriteLine($"生产者发送了消息: {message}");
        }

        Console.WriteLine("生产者可点击Enter退出...");
        Console.ReadLine();
    }
}

此时观察控制台程序,说明已经完成“生产者-MQ-消费者”流程:

 

 

 

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

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

相关文章

大语言模型的评估指标

目录 一、混淆矩阵 1. 混淆矩阵的结构(二分类为例) 2.从混淆矩阵衍生的核心指标 3.多分类任务的扩展 4. 混淆矩阵的实战应用 二、分类任务核心指标 1. Accuracy(准确率) 2. Precision(精确率) 3. …

好用————python 库 下载 ,整合在一个小程序 UIUIUI

上图~ import os import time import threading import requests import subprocess import importlib import tkinter as tk from tkinter import ttk, messagebox, scrolledtext from concurrent.futures import ThreadPoolExecutor, as_completed from urllib.parse im…

OpenVINO教程(五):实现YOLOv11+OpenVINO实时视频目标检测

目录 实现讲解效果展示完整代码 本文作为上篇博客的延续,在之前实现了图片推理的基础上,进一步介绍如何进行视频推理。 实现讲解 首先,我们需要对之前的 predict_and_show_image 函数进行拆分,将图像显示与推理器(pre…

CentOS的安装以及网络配置

CentOS的下载 在学习docker之前,我们需要知道的就是docker是运行在Linux内核之上的,所以我们需要Linux环境的操作系统,当然了你也可以选择安装ubuntu等操作系统,如果你不想在本机安装的话还可以考虑买阿里或者华为的云服务器&…

「Java EE开发指南」用MyEclipse开发EJB 3无状态会话Bean(二)

本教程介绍在MyEclipse中开发EJB 3无状态会话bean,由于JPA实体和EJB 3实体非常相似,因此本教程不涉及EJB 3实体Bean的开发。在本教程中,您将学习如何: 创建EJB 3项目创建无状态会话bean部署并测试bean 在上文中(点击…

深度学习在DOM解析中的应用:自动识别页面关键内容区块

摘要 本文介绍了如何在爬取东方财富吧(https://www.eastmoney.com)财经新闻时,利用深度学习模型对 DOM 树中的内容区块进行自动识别和过滤,并将新闻标题、时间、正文等关键信息分类存储。文章聚焦爬虫整体性能瓶颈,通…

PyQt6实例_pyqtgraph多曲线显示工具_代码分享

目录 概述 效果 代码 返回结果对象 字符型横坐标 通用折线图工具 工具主界面 使用举例 概述 1 分析数据遇到需要一个股票多个指标对比或一个指标多个股票对比,涉及到同轴多条曲线的显示,所以开发了本工具。 2 多曲线显示部分可以当通用工具使…

Linux网络编程 多线程Web服务器:HTTP协议与TCP并发实战

问题解答 TCP是如何防止SYN洪流攻击的? 方式有很多种,我仅举例部分: 1、调整内核参数 我们知道SYN洪流攻击的原理就是发送一系列无法完成三次握手的特殊信号,导致正常的能够完成三次握手的信号因为 连接队列空间不足&#xff…

Qt 下载的地址集合

Qt 下载离线安装包 download.qt.io/archive/qt/5.14/5.14.2/ Qt 6 安装下载在线安装包 Index of /qt/official_releases/online_installers/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

ubuntu下gcc/g++安装及不同版本切换

1. 查看当前gcc版本 $ gcc --version# 查看当前系统中已安装版本 $ ls /usr/bin/gcc*2. 安装新版本gcc $ sudo apt-get update# 这里以版本12为依据(也可以通过源码方式安装,请自行Google!) $ sudo apt-get install -y gcc-12 g…

FPGA入门学习Day1——设计一个DDS信号发生器

目录 一、DDS简介 (一)基本原理 (二)主要优势 (三)与传统技术的对比 二、FPGA存储器 (一)ROM波形存储器 (二)RAM随机存取存储器 (三&…

微信小程序拖拽排序有效果图

效果图 .wxml <view class"container" style"--w:{{w}}px;" wx:if"{{location.length}}"><view class"container-item" wx:for"{{list}}" wx:key"index" data-index"{{index}}"style"--…

WT2000T专业录音芯片:破解普通录音设备信息留存、合规安全与远程协作三大难题

在快节奏的现代商业环境中&#xff0c;会议是企业决策、创意碰撞和战略部署的核心场景。然而&#xff0c;传统会议记录方式常面临效率低、信息遗漏、回溯困难等痛点。如何确保会议内容被精准记录并高效利用&#xff1f;会议室专用录音芯片应运而生&#xff0c;以智能化、高保真…

【Python 学习笔记】 pip指令使用

系列文章目录 pip指令使用 文章目录 系列文章目录前言安装配置使用pip 管理Python包修改pip下载源 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 当前文章记录的是我在学习过程的一些笔记和思考&#xff0c;可能存在有误解的地方&#xff0c;仅供大家…

C# 文件读取

文件读取是指使用 C# 程序从计算机文件系统中获取文件内容的过程。将存储在磁盘上的文件内容加载到内存中&#xff0c;供程序处理。主要类型有&#xff1a;文本文件读取&#xff08;如 .txt, .csv, .json, .xml&#xff09;&#xff1b;二进制文件读取&#xff08;如 .jpg, .pn…

leetcode125.验证回文串

class Solution {public boolean isPalindrome(String s) {s s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();for(int i0,js.length()-1;i<j;i,j--){if(s.charAt(i)!s.charAt(j))return false;}return true;} }

【Android面试八股文】Android系统架构【一】

Android系统架构图 1.1 安卓系统启动 1.设备加电后执行第一段代码&#xff1a;Bootloader 系统引导分三种模式&#xff1a;fastboot&#xff0c;recovery&#xff0c;normal&#xff1a; fastboot模式&#xff1a;用于工厂模式的刷机。在关机状态下&#xff0c;按返回开机 键进…

【数据可视化-21】水质安全数据可视化:探索化学物质与水质安全的关联

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

【prometheus+Grafana篇】从零开始:Linux 7.6 上二进制安装 Prometheus、Grafana 和 Node Exporter

&#x1f4ab;《博主主页》&#xff1a;奈斯DB-CSDN博客 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了解 &#x1f496;如果觉得文章对你有所帮…

STM32(M4)入门:GPIO与位带操作(价值 3w + 的嵌入式开发指南)

一&#xff1a;GPIO 1.1 了解时钟树&#xff08;必懂的硬件基础&#xff09; 在 STM32 开发中&#xff0c;时钟系统是一切外设工作的 “心脏”。理解时钟树的工作原理&#xff0c;是正确配置 GPIO、UART 等外设的核心前提。 1.1.1 为什么必须开启外设时钟&#xff1f; 1. 计…