介绍

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来完成一个比较常见的生产者和消费者模式的代码,新建两个控制台项目,RabbitMQConsumerRabbitMQProducer

分别在两个项目中安装组件

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相关推荐

  1. Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)

    一.前言     上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案. 二.使用的插件     HangFire 一个开源的.NET任务调度框架,最大特点在于 ...

  2. Windows下当地RabbitMQ服务的安装

    Windows下本地RabbitMQ服务的安装 本文参考:刘若泽相关技术文档 当然这些内容页可以通过RabbitMQ官方网站获得. RabbitMQ配置说明手册 一.RaibbitMQ服务器配置 1. ...

  3. windows环境下搭建rabbitMQ开发环境

    2019独角兽企业重金招聘Python工程师标准>>> windows环境下搭建rabbitMQ开发环境 1.下载与安装 erlang rabbitmq 是使用erlang语言开发的 ...

  4. 阿里云服务centOS7下安装rabbitmq

    环境: centos:  7.4:阿里云服务器 erlang :18.3: rabbitmq :rabbitmq-server-generic-unix-3.6.15 参考:1.erlang与cent ...

  5. windows下安装RabbitMQ

    windows下安装RabbitMQ 下载Erlang,官方下载中心 erlang下载,http://www.erlang.org/ 本机是win10 64位操作系统,下载64位.exe安装包 安装包 ...

  6. .Net Core下如何管理配置文件

    一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensions.Cnfiguration.XX ...

  7. 在asp.net core 下定义统一的入参和出参格式

    在使用.net core 开发Api的过程中,为了统一输入参数的格式,并增加一些全局必须含有的字段,比如:Code,Message,Lang等等,能采取的变通方式还是有几种的,然而都不够优雅,为了需求 ...

  8. 一个.NET Core下的开源插件框架Pluginfactory

    插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...

  9. .NET Core 下的爬虫利器

    爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎. 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当我们的目标发生改版升级,规则转换后我们写 ...

最新文章

  1. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
  2. 《预训练周刊》第33期:艾伦AI研究所等 | 预训练语言模型的高效分层域适应
  3. 《Science》刊登中科院最新突破,用二氧化碳合成淀粉,网友已开始安排诺贝尔奖...
  4. vue-cli生成项目时你应当知道的
  5. P5081 Tweetuzki爱取球(期望)(线性求逆元)
  6. extremecomponents-1.0.1.jar 的使用小例子
  7. 浅谈C#tabcontrol应用
  8. editplus编辑器使用-快速开始(editplus通过sftp协议远程编辑文件)
  9. python将姓王的都改成老王_全域明星-第46章:校长姓王,隔壁老王?-爱阅小说网...
  10. 软考高级 2022年11月信息系统项目管理师
  11. nio中的Files类常用方法
  12. php如何采集,php采集入门教程,教你如何写采集
  13. 生物信息数据格式:fasta格式
  14. win10系统的字体突然变成繁体字,如何修改回简体中文
  15. 【R】R语言指定包安装目录
  16. 读取单细胞测序数据时出现错误 Error in readMM(file = matrix.loc) : file is not a MatrixMarket file
  17. linux 下串口转usb不能发送数据包,Linux ,USB转串口驱动,没法读到数据
  18. 手把手教你开发Pro/TOOLKIT应用程序(一)
  19. 劳动仲裁成功的几率大吗?
  20. 「订阅号助手」App发布:手机编辑微信公众号消息,更方便!

热门文章

  1. 8-[多线程] 进程池线程池
  2. mysql 日期时间类型 自动转型 及 运算
  3. ActiveMQ无法启动
  4. 盗窃60秒java_EOS节点投票60秒刷新一次 EOS Asia 金马(下) 欧链·宁话区块链 EOS超级节点访谈...
  5. 如何将Rant变成生产力电动工具
  6. 50多种在Photoshop中删除图像背景的工具和技术,第3页
  7. Javascript基础之-Promise
  8. Python入门之数据类型
  9. List 分页加载数据控制机制
  10. oracle的本地安装和PUTTY+XMING远程连接安装和oracle翻页功能