.NET Core 下使用 RabbitMQ
介绍
RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式
官网:https://www.rabbitmq.com/dotnet.html
开源地址:https://github.com/rabbitmq/rabbitmq-dotnet-client
安装
docker下安装 RabbitMQ
docker pull rabbitmq:3-management
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3-management
其他平台安装 RabbitMQ:https://www.rabbitmq.com/download.html
为了开发方便,我在docker中安装了RabbitMQ,RabbitMQ安装完成后,默认端口打开地址为:http://localhost:15672
,输入默认账号密码,guest/guest,可以看到RabbitMQ UI界面。
快速开始
接下来我们用RabbitMQ来完成一个比较常见的生产者和消费者模式的代码,新建两个控制台项目,RabbitMQConsumer
和RabbitMQProducer
。
分别在两个项目中安装组件
Install-Package RabbitMQ.Client
在RabbitMQProducer
生产者项目中,添加以下代码。
using RabbitMQ.Client;
using System;
using System.Text;namespace RabbitMQProducer
{class Program{static void Main(string[] args){var factory = new ConnectionFactory(){HostName = "localhost",Port = 5672,UserName = "guest",Password = "guest"};using var connection = factory.CreateConnection();using var channel = connection.CreateModel();var exchange = "msg_test";channel.ExchangeDeclare(exchange, type: ExchangeType.Fanout);for (int i = 0; i < 10000; i++){var message = $"hello,我是生产者【{i + 1}】号";var body = Encoding.UTF8.GetBytes(message);channel.BasicPublish(exchange, routingKey: "", basicProperties: null, body: body);Console.WriteLine($"- 发送消息:{message}");}}}
}
模拟发出10000次消息,接下来在RabbitMQConsumer
消费者项目中接收消息,代码如下:
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;namespace RabbitMQConsumer
{class Program{static void Main(string[] args){var factory = new ConnectionFactory(){HostName = "localhost",Port = 5672,UserName = "guest",Password = "guest"};using var connection = factory.CreateConnection();using var channel = connection.CreateModel();var exchange = "msg_test";channel.ExchangeDeclare(exchange, type: ExchangeType.Fanout);var queueName = channel.QueueDeclare().QueueName;channel.QueueBind(queue: queueName, exchange, routingKey: "");Console.WriteLine("开始监听消息...");while (true){var consumer = new EventingBasicConsumer(channel);consumer.Received += (model, ea) =>{byte[] body = ea.Body.ToArray();var message = Encoding.UTF8.GetString(body);Console.WriteLine($"- 接收到消息:{message}");};channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumer);}}}
}
同时启动两个看看效果。
一闪而过,速度还是挺快的,更多操作可以查看官方教程:https://www.rabbitmq.com/getstarted.html
.NET Core 下使用 RabbitMQ相关推荐
- Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)
一.前言 上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案. 二.使用的插件 HangFire 一个开源的.NET任务调度框架,最大特点在于 ...
- Windows下当地RabbitMQ服务的安装
Windows下本地RabbitMQ服务的安装 本文参考:刘若泽相关技术文档 当然这些内容页可以通过RabbitMQ官方网站获得. RabbitMQ配置说明手册 一.RaibbitMQ服务器配置 1. ...
- windows环境下搭建rabbitMQ开发环境
2019独角兽企业重金招聘Python工程师标准>>> windows环境下搭建rabbitMQ开发环境 1.下载与安装 erlang rabbitmq 是使用erlang语言开发的 ...
- 阿里云服务centOS7下安装rabbitmq
环境: centos: 7.4:阿里云服务器 erlang :18.3: rabbitmq :rabbitmq-server-generic-unix-3.6.15 参考:1.erlang与cent ...
- windows下安装RabbitMQ
windows下安装RabbitMQ 下载Erlang,官方下载中心 erlang下载,http://www.erlang.org/ 本机是win10 64位操作系统,下载64位.exe安装包 安装包 ...
- .Net Core下如何管理配置文件
一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensions.Cnfiguration.XX ...
- 在asp.net core 下定义统一的入参和出参格式
在使用.net core 开发Api的过程中,为了统一输入参数的格式,并增加一些全局必须含有的字段,比如:Code,Message,Lang等等,能采取的变通方式还是有几种的,然而都不够优雅,为了需求 ...
- 一个.NET Core下的开源插件框架Pluginfactory
插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...
- .NET Core 下的爬虫利器
爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎. 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当我们的目标发生改版升级,规则转换后我们写 ...
最新文章
- 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
- 《预训练周刊》第33期:艾伦AI研究所等 | 预训练语言模型的高效分层域适应
- 《Science》刊登中科院最新突破,用二氧化碳合成淀粉,网友已开始安排诺贝尔奖...
- vue-cli生成项目时你应当知道的
- P5081 Tweetuzki爱取球(期望)(线性求逆元)
- extremecomponents-1.0.1.jar 的使用小例子
- 浅谈C#tabcontrol应用
- editplus编辑器使用-快速开始(editplus通过sftp协议远程编辑文件)
- python将姓王的都改成老王_全域明星-第46章:校长姓王,隔壁老王?-爱阅小说网...
- 软考高级 2022年11月信息系统项目管理师
- nio中的Files类常用方法
- php如何采集,php采集入门教程,教你如何写采集
- 生物信息数据格式:fasta格式
- win10系统的字体突然变成繁体字,如何修改回简体中文
- 【R】R语言指定包安装目录
- 读取单细胞测序数据时出现错误 Error in readMM(file = matrix.loc) : file is not a MatrixMarket file
- linux 下串口转usb不能发送数据包,Linux ,USB转串口驱动,没法读到数据
- 手把手教你开发Pro/TOOLKIT应用程序(一)
- 劳动仲裁成功的几率大吗?
- 「订阅号助手」App发布:手机编辑微信公众号消息,更方便!
热门文章
- 8-[多线程] 进程池线程池
- mysql 日期时间类型 自动转型 及 运算
- ActiveMQ无法启动
- 盗窃60秒java_EOS节点投票60秒刷新一次 EOS Asia 金马(下) 欧链·宁话区块链 EOS超级节点访谈...
- 如何将Rant变成生产力电动工具
- 50多种在Photoshop中删除图像背景的工具和技术,第3页
- Javascript基础之-Promise
- Python入门之数据类型
- List 分页加载数据控制机制
- oracle的本地安装和PUTTY+XMING远程连接安装和oracle翻页功能