RabbitMQ简单实践

###一、RabbitMQ的简介和安装

1.1 RabbitMQ的安装

到官网下载最新的安装包,和Erlang的安装包,我的安装包如下图

先安装Erlang,再安装RabbitMQ,一直点击下一步就可以了。
安装完成之后,我们需要启用管理功能,找到安装位置,进入到sbin文件夹,执行下列命令rabbitmq-plugins enable rabbitmq_management,如图:

启用成功后,打开http://localhost:15672即可进入管理页面,用户名和密码均为guest至此安装完成,rabbitmq已经可以正常使用。

1.2 RabbitMQ简介

RabbitMQ是实现了AMQP协议的开源消息中间件。在我们日常开发中,可以帮助我们实现以下的常用功能:
异步处理:批量数据异步处理
应用解耦:串行任务并行化
流量削峰:高负载任务负载均衡
广播:基于发布/订阅模型实现一对多通信

###二、简单工作队列
下面我们开始从代码聊起,写一个基于.netcore的demo来了解简单队列
####2.1、简单队列 Simple-queue模型
简单队列的模型如下图:

P:为生产者(Producer),为消息的发送方
C:为消费者(Consumer),消费队列中的消息
整个流程为,生产者生产消息,发布到队列(Queue)中;消费者监听这个队列,消费里面的消息;
下面我们开始使用编写代码来完成上述过程,代码框架基于netcore3.1,并引用RabbitMQ.Client5.1.2包;
####2.2 与RabbitMQ建立连接

        public static IConnection GetConnection()
        {
            ConnectionFactory factory = new ConnectionFactory();
            factory.UserName = "guest";
            factory.Password = "guest";
            factory.HostName = "127.0.0.1";
            factory.Port = 5672;
            return factory.CreateConnection();
        }

指定用户名、密码、地址端口等,使用CreateConnection方法即可创建连接;
####2.3、发送消息到队列

 public static void PublishMessage()
        {
            try
            {
                var conn = GetConnection();
                var channel = conn.CreateModel();
                channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
                string msg = "hello simple queue!";
                var body = Encoding.UTF8.GetBytes(msg);
                channel.BasicPublish("", QUEUE_NAME, null, body);
                channel.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

我们在队列里,收到了刚才发送的消息:

####2.4、监听队列接收消息
收到消息后,我们需要消费者去获取取消息,并消费,代码如下:

static void SimpleConsumer()
		{
			//创建连接
			IConnection connection = MQUtils.GetConnection();
			//创建通道
			var channel = connection.CreateModel();
			//事件基本消费者
			EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
			//接收到消息事件
			consumer.Received += (ch, ea) =>
			{
				var message = Encoding.UTF8.GetString(ea.Body);
				Console.WriteLine($"Simple Consumer 收到消息: {message},时间:{DateTime.Now}");
			};
			//启动消费者 设置为自动应答消息
			channel.BasicConsume("queue_test", true, consumer);
			Console.WriteLine("Simple Consumer 消费者已启动");
			Console.ReadKey();
			channel.Dispose();
			connection.Close();
		}

运行程序,我们可以看到已经读取到了队列中的消息:

同时,队列中的消息已经被消费:

至此我们的简单队列,已经写完并演示完毕
###三、简单队列小结
简单队列是最简单的工作模型,消费者和生产者通过RabbitMQ的队列解耦,大家各司其职,是学习rabbitmq入门的第一步。
参考文章:
1、Hello RabbitMQ 地址:https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html
2、https://www.cnblogs.com/stulzq/p/7551819.html

原文地址:https://www.cnblogs.com/zqllove/p/12642680.html

时间: 2024-11-12 17:25:35

RabbitMQ简单实践的相关文章

RabbitMQ使用实践

RabbitMQ使用实践 参考网站: http://blog.chinaunix.net/topic/surpershi/ http://blog.csdn.net/lwkcn/article/details/25086467 http://snoopyxdy.blog.163.com/blog/static/60117440201352615631930/ 1.简介 MQ(Message Queue)消息队列,用于应用系统解耦.消息异步分发. RabbitMQ是一个在AMQP基础上完整的,可复

Android 设计随便说说之简单实践(合理组合)

上一篇(Android 设计随便说说之简单实践(模块划分))例举了应用商店设计来说明怎么做模块划分.模块划分主要依赖于第一是业务需求,具体是怎么样的业务.应用商店则包括两个业务,就是向用户展示applist,和下载app.第二是运行环境,在Android平台,有androidsdk提供socket等API支持.因此将模块大体换发了5个模块.(当然了图片加载可以额外提出,用开源组件去做,但是这里为了说明如何设计,暂不提到.还有下载也可以利用开源组件)分别是如下: 模块1 UI模块,负责展示信息和用

SQL知识以及SQL语句简单实践

综述 大家都知道SQL是结构化查询语言,是关系数据库的标准语言,是一个综合的,功能极强的同时又简洁易学的,它集级数据查询(Data Quest),数据操纵(Data Manipulation),数据定义(Data Definition),数据控制(Data Control)于一体 即: SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句 ※ 数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句 ※ 数

RabbitMQ简单学习笔记

1.安装Erlang环境 下载地址:http://www.erlang.org/downloads 2.安装RabbitMQ服务端 下载地址:http://www.rabbitmq.com/download.html 打开命令行工具,进入RabbitMQ目录下的sbin文件夹下,输入以下命令: rabbitmq-service install --以服务的形式安装RabbitMQ rabbitmq-service start  --启动RabbitMQ服务,也可以在cmd中输入net start

Mysql 备份恢复的简单实践

一.备份: 进行mysql的安装目录: 使用./mysqldump -u root -h 127.0.0.1 -P 3306 -p mysql>trymysql.sql 输入密码,备份成功. 二.恢复 进行mysql. 创建数据库 create database trymysql; 进入数据库 use trymysql ; 恢复 source trymysql.sql Mysql 备份恢复的简单实践

GDB 程序调试简单实践

用了好久的GCC/G++ 却一直都没用过GDB调试过程序,有时程序不是很大,一般有错,直接看编译器编译结果就差不多知道错在哪儿了,或者使用codeblocks单步调试,甚至回到windows下面调试,但是总是不太方便,因此有必要看一下GDB调试方法和基本步骤. 下面是一个简单的演示: 首先创建一个有错误的代码,如下: 这个程序很简单,目的是接受用户的输入,并将用户的输入回应输出来. 但是这个程序的第17行有个错误,使用了未初始化的字符指针name,因此编译运行后会出现段错误,如下: 下面利用GD

RabbitMQ简单介绍及安装使用

一.RabbitMQ简单介绍 二.安装配置1.安装环境 CentOS7 server1 190.168.3.250安装包依赖[[email protected] ~]# yum -y install gcc gcc-c++ m4 ncurses-devel openssl-devel2.安装RabbitMQ 按顺序安装:3.配置[[email protected] ~]# vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.14/ebin/rabbit.a

ZooKeeper分布式锁简单实践

ZooKeeper分布式锁的实现原理 在分布式解决方案中,Zookeeper是一个分布式协调工具.当多个JVM客户端,同时在ZooKeeper上创建相同的一个临时节点,因为临时节点路径是保证唯一,只要谁能够创建节点成功,谁就能够获取到锁.没有创建成功节点,就会进行等待,当释放锁的时候,采用事件通知给客户端重新获取锁资源.如果请求超时直接返回给客户端超时,重新请求即可. 代码实现为了更好的展现效果,我这里设置每个线程请求需要1s,请求超时时间为30s. 首先我们先写一个测试类,模拟多线程多客户端请

Rabbitmq 简单介绍,安装和go客户端使用

Rabbitmq 简单介绍,安装和go客户端使用 1,消息队列介绍 1.1 什么是消息队列? 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户.消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列互交.消息会保存在队列中,直到接收者取回它.消息队列,一般我们会简称他为MQ(Message