RabbitMQ消息列队

2023-10-12 05:20
文章标签 消息 rabbitmq 列队

本文主要是介绍RabbitMQ消息列队,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RabbitMQ消息列队

  • RabbitMQ安装
  • RabbitMQ的应用

RabbitMQ安装

  1. 下载RabbitMQ
    RabbitMQ服务:http://www.rabbitmq.com/download.html
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在安装之前我们要安装RabbitMQ 的依赖环境,需要另外安装
    Erlang 安装 https://www.erlang-solutions.com/resources/download.html
    一定要注意 RabbitMQ 的版本和Erlang版本是否兼容
    在这里插入图片描述在这里插入图片描述
    最后我们一定要先安装配置依赖环境 Erlang\OTP
    直接运行下载好的 我们运行otp_win64_22.1.exe
    安装完成后,设置环境变量如下:
    在这里插入图片描述
    然后运行CMD,输入erl,测试安装是否成功,如下图:
    在这里插入图片描述
    安装rabbitmq-server
    安装完依赖后,我们接着安装rabbitmq-server-3.8.0.exe。
    在这里插入图片描述
    CDM命令
    rabbitmq-plugins enable rabbitmq_management
    在这里插入图片描述 rabbitmq-server.bat start
    在这里插入图片描述
    启动成功后,在浏览器输入地址http://127.0.0.1:15672 进入管理页面,账户密码都是guest
    管理页面介绍https://baijiahao.baidu.com/s?id=1732891548341088166&wfr=spider&for=pc

在这里插入图片描述至此RabbitMQ安装完毕

RabbitMQ的应用

我们在安装之前,MQ主要用于削峰
MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

本地应用开始
首先创建两个控制台应用程序,KibaRabbitMQSend和KibaRabbitMQReceived。
然后引入RabbitMQ的开源类库。
在C#里使用RabbitMQ开源类库非常简单,可以去官网下载一个.NET版本的RabbitMQ客户端类库,也可以直接在Nuget上搜索RabbitMQ,然后安装,如下图:
在这里插入图片描述一、KibaRabbitMQSend
安装完RabbitMQ开源类库后,我们编写代码,实现向RabbitMQ服务器发送消息,代码如下:

using RabbitMQ.Client;
using System;
using System.Text;
using System.Threading;namespace KibaRabbitMQSend
{public class Program{static void Main(string[] args){var factory = new ConnectionFactory();factory.HostName = "localhost";//主机名,Rabbit会拿这个IP生成一个endpoint,这个很熟悉吧,就是socket绑定的那个终结点。factory.UserName = "guest";//默认用户名,用户可以在服务端自定义创建,有相关命令行factory.Password = "guest";//默认密码using (var connection = factory.CreateConnection())//连接服务器,即正在创建终结点。{//创建一个通道,这个就是Rabbit自己定义的规则了,如果自己写消息队列,这个就可以开脑洞设计了//这里Rabbit的玩法就是一个通道channel下包含多个队列Queueusing (var channel = connection.CreateModel()){for (int i = 0; i < 10000; i++){channel.QueueDeclare("kibaQueue", false, false, false, null);//创建一个名称为kibaQueue的消息队列var properties = channel.CreateBasicProperties();properties.DeliveryMode = 1;string message = i+" I am Kiba518"; //传递的消息内容channel.BasicPublish("", "kibaQueue", properties, Encoding.UTF8.GetBytes(message)); //生产消息Console.WriteLine($"发送 Send :{message}");Thread.Sleep(500);}//channel.QueueDeclare("kibaQueue", false, false, false, null);//创建一个名称为kibaqueue的消息队列//var properties = channel.CreateBasicProperties();//properties.DeliveryMode = 1;//string message = "I am Kiba518"; //传递的消息内容//channel.BasicPublish("", "kibaQueue", properties, Encoding.UTF8.GetBytes(message)); //生产消息//Console.WriteLine($"Send:{message}");}}}}
}

在这里插入图片描述运行代码
然后我们使用命令行rabbitmqctl list_queues,去RabbitMQ的服务器查看当前消息队列,如下图:
在这里插入图片描述
二、KibaRabbitMQReceived
现在我们编写接收消息代码

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
using System.Threading;namespace KibaRabbitMQReceived
{public class Program{static void Main(string[] args){var factory = new ConnectionFactory();factory.HostName = "localhost";factory.UserName = "guest";factory.Password = "guest";while (true){using (var connection = factory.CreateConnection()){using (var channel = connection.CreateModel()){channel.QueueDeclare("kibaQueue", false, false, false, null);/* 这里定义了一个消费者,用于消费服务器接受的消息* C#开发需要注意下这里,在一些非面向对象和面向对象比较差的语言中,是非常重视这种设计模式的。* 比如RabbitMQ使用了生产者与消费者模式,然后很多相关的使用文章都在拿这个生产者和消费者来表述。* 但是,在C#里,生产者与消费者对我们而言,根本算不上一种设计模式,他就是一种最基础的代码编写规则。* 所以,大家不要复杂的名词吓到,其实,并没那么复杂。* 这里,其实就是定义一个EventingBasicConsumer类型的对象,然后该对象有个Received事件,* 该事件会在服务接收到数据时触发。*/var consumer = new EventingBasicConsumer(channel);//消费者channel.BasicConsume("kibaQueue", true, consumer);//消费消息consumer.Received += (model, ea) =>{var body = ea.Body.ToArray();var message = Encoding.UTF8.GetString(body);Console.WriteLine("接收"+message);};}}Thread.Sleep(300);}}}
}

在这里插入图片描述安装
https://www.cnblogs.com/mq0036/p/11726733.html
https://blog.csdn.net/qq_40732336/article/details/113186732

部署问题
https://www.cnblogs.com/yyee/p/14291300.html

这篇关于RabbitMQ消息列队的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/193527

相关文章

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me