RabbitMQ的基本使用

RabbitMQ的基本使用

引入程序集:RabbitMQ.Client

生产者

/// <summary>
/// ProducerWrites 写入消息  ConsumerConsumption 消费消息
/// </summary>
public class ProducerWrites
{public static void Send(){string path = AppDomain.CurrentDomain.BaseDirectory;string tag = path.Split('/', '\\').Last(s => !string.IsNullOrEmpty(s));Console.WriteLine($"这里是 {tag} 启动了。。");//创建链接:通过一个connection工厂来创建链接ConnectionFactory factory = new ConnectionFactory();factory.HostName = "localhost";//RabbitMQ服务在本地运行factory.UserName = "guest";//用户名factory.Password = "guest";//密码 //factory.VirtualHost = "/Richard";//创建链接using (IConnection connection = factory.CreateConnection()){//创建一个信道;using (IModel channel = connection.CreateModel()){ //删除队列channel.QueueDelete("ProducerWrites"); //删除交换机channel.ExchangeDelete("ProducerWritesExChange"); //创建队列channel.QueueDeclare(queue: "ProducerWrites", durable: true, exclusive: false, autoDelete: false, arguments: null);//创建交换机channel.ExchangeDeclare(exchange: "ProducerWritesExChange", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);//交换机和队列绑定channel.QueueBind(queue: "ProducerWrites", exchange: "ProducerWritesExChange", routingKey: "advanced", arguments: null);Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine($"生产者{tag}已准备就绪~~~");{for (int i = 0; i < 20; i++){IBasicProperties basicProperties = channel.CreateBasicProperties();basicProperties.Persistent = true;//basicProperties.DeliveryMode = 2;string message = $"{tag}:大家伙欢迎大家来到.NET高级班的VIP课程_{i+1}";byte[] body = Encoding.UTF8.GetBytes(message);channel.BasicPublish(exchange: "ProducerWritesExChange",routingKey: "advanced",basicProperties: basicProperties,body: body);Console.WriteLine($"{message} 已发送~");Thread.Sleep(500);}while (true){IBasicProperties basicProperties = channel.CreateBasicProperties();basicProperties.Persistent = true;//basicProperties.DeliveryMode = 2;Console.WriteLine("请输入消息内容:");string message =Console.ReadLine();byte[] body = Encoding.UTF8.GetBytes(message);channel.BasicPublish(exchange: "ProducerWritesExChange",routingKey: "advanced",basicProperties: basicProperties,body: body);Console.WriteLine($"{message} 已发送~"); Thread.Sleep(500);}}}}}
}

消费者

public class ConsumerConsumption
{/// <summary>/// ProducerWrites 写入消息  ConsumerConsumption 消费消息/// </summary>public static void Consumption(){string path = AppDomain.CurrentDomain.BaseDirectory;string tag = path.Split('/', '\\').Last(s => !string.IsNullOrEmpty(s));Console.WriteLine($"这里是 {tag} 启动了。。");var factory = new ConnectionFactory();factory.HostName = "localhost";//RabbitMQ服务在本地运行factory.UserName = "guest";//用户名factory.Password = "guest";//密码 using (var connection = factory.CreateConnection()){using (var channel = connection.CreateModel()){Console.ForegroundColor = ConsoleColor.Green;try{channel.QueueDeclare(queue: "ProducerWrites", durable: true, exclusive: false, autoDelete: false, arguments: null);channel.ExchangeDeclare(exchange: "ProducerWritesExChange", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);channel.QueueBind(queue: "ProducerWrites", exchange: "ProducerWritesExChange", routingKey: "advanced", arguments: null);//rabbitMq消费消息是通过事件驱动的:var consumer = new EventingBasicConsumer(channel);consumer.Received += (model, ea) =>  //如果有消息进入到Rabbitmq,就会触发这个事件来完成消息的消费;{var body = ea.Body;var message = Encoding.UTF8.GetString(body.ToArray());Console.WriteLine($"{tag}接受消息: {message}");};channel.BasicConsume(queue: "ProducerWrites",autoAck: true,consumer: consumer);Console.WriteLine(" Press [enter] to exit.");Console.ReadLine();}catch (Exception ex){Console.WriteLine(ex.Message);}}}}
}

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

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

相关文章

qt和vue交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

CLIP概述

文章目录 Learning Transferable Visual Models From Natural Language Supervision(使用自然语言的监督信号训练一个可迁移的视觉模型)AbstractIntroduction and Motivating WorkApproachNatural Language SupervisionCreating a Suffciently Large DatasetSelecting an Eff…

13_Linux无设备树Platform设备驱动

目录 Linux驱动的分离与分层 驱动的分隔与分离 驱动的分层 platform平台驱动模型简介 platform总线 platform驱动 platform设备 platform设备程序编写 platform驱动程序编写 测试APP编写 运行测试 Linux驱动的分离与分层 像I2C、SPI、LCD 等这些复杂外设的驱动就不…

Fortinet Accelerate 2023·中国区巡展收官丨让安全成就未来

7月18日&#xff0c;2023 Fortinet Accelerate Summit在上海成功举办&#xff01;这亦象征着“Fortinet Accelerate2023中国区巡展”圆满收官。Fortinet携手来自多个典型行业的百余位代表客户&#xff0c;以及Telstra - PBS 太平洋电信、Tenable等多家生态合作伙伴&#xff0c;…

利用数据分析告警机制,实现鸿鹄与飞书双向集成

需求描述 实现鸿鹄与飞书的双向集成&#xff0c;依赖鸿鹄的告警机制&#xff0c;可以发送用户关心的信息到飞书。同时依赖飞书强大的卡片消息功能&#xff0c;在飞书消息里面能够通过链接&#xff08;如下图&#xff09;返回到鸿鹄以方便用户进一步排查和分析问题。 解决方案 1…

【PHP面试题75】PHP有哪些魔术变量,如何使用他们?

文章目录 一、前言二、魔术变量2.1 __LINE__2.2 __FILE__2.3 __DIR__2.4 __FUNCTION__2.5 __CLASS__2.6 __TRAIT__2.7 __METHOD__2.8 __NAMESPACE__ 三、总结 一、前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&#xff0c;…

CGT Asia嘉年华|2023第四届亚洲细胞与基因治疗 创新峰会(广州站)10月升级启航

近年来&#xff0c;全球CGT发展突飞猛进&#xff0c;为遗传罕见病、难治性慢性病和肿瘤患者带来了新的希望&#xff0c;也成为整个国际领域科技竞争的未来焦点。国家发改委发布的《“十四五”生物经济发展规划》明确指出要重点发展基因诊疗、干细胞治疗、免疫细胞治疗等新技术&…

利用鸿鹄优化共享储能的SCADA 系统功能,赋能用户数据自助分析

摘要 本文主要介绍了共享储能的 SCADA 系统大数据架构&#xff0c;以及如何利用鸿鹄来更好的优化 SCADA 系统功能&#xff0c;如何为用户进行数据自助分析赋能。 1、共享储能介绍 说到共享储能&#xff0c;可能不少朋友比较陌生&#xff0c;下面我们简单介绍一下共享储能的价值…

IntelliJ IDEA - Error:Module ‘name‘ production: java.lang.NullPointerException

问题描述 Error:Module name production: java.lang.NullPointerException 原因分析 一般出现这种情况多见于 IDEA 自身的问题&#xff0c;比如&#xff1a;切换分支或者拉取最新代码时结构相差过大&#xff0c;所以解决 IDEA 自身缓存的问题即可 解决方案 Build > Rebuil…

Python高光谱遥感数据处理与高光谱遥感机器学习方法深度应用

目录 ​第一章 高光谱基础 第二章 高光谱开发基础&#xff08;Python&#xff09; 第三章 高光谱机器学习技术&#xff08;python&#xff09; 第四章 典型案例操作实践 更多推荐 本教程提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 涵盖高光谱遥感的基础…

2023年7月18日,File类,IO流,线程

File类 1. 概述 File&#xff0c;是文件和目录路径的抽象表示 File只关注文件本身的信息&#xff0c;而不能操作文件里的内容 。如果需要读取或写入文件内容&#xff0c;必须使用IO流来完成。 在Java中&#xff0c;java.io.File 类用于表示文件或目录的抽象路径名。它提供了一…

Rancher 管理 Kubernetes 集群

//Rancher 简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台&#xff0c;实现了 Kubernetes 集群在混合云本地数据中心的集中部署与管理&#xff0c; 以确保集群的安全性&#xff0c;加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。 官网&#…

selenium.chrome怎么写扩展拦截或转发请求?

Selenium WebDriver 是一组开源 API&#xff0c;用于自动测试 Web 应用程序&#xff0c;利用它可以通过代码来控制chrome浏览器&#xff01; 有时候我们需要mock接口的返回&#xff0c;或者拦截和转发请求&#xff0c;今天就来实现这个功能。 代码已开源&#xff1a; https:/…

HTML语法

文章目录 前言HTML 文件基本结构常见标签标签种类特殊符号图片链接a链接 双标签链接 列表表格 &#xff1a;表单多行文本域: 前言 HTML是有标签组成的 <body>hello</body>大部分标签成对出现. 为开始标签, 为结束标签. 少数标签只有开始标签, 称为 “单标签”. 开…

Helm 安装prometheus-stack 使用local pv持久化存储数据

目录 背景&#xff1a; 环境准备&#xff1a; 1. 磁盘准备 2. 磁盘分区格式化 local storage部署 1. 节点打标签 2. 创建local pv storageClass和prometheus-pv Prometheus-stack部署 1. 下载helm chart包 2. values.yaml 参数解释 3. 部署prometheus-stack 4. 查看…

Baichuan-13B:130亿参数的开源语言模型,引领中文和英文benchmark

Baichuan-13B: 一个强大的开源大规模语言模型 标题&#xff1a;Baichuan-13B&#xff1a;130亿参数的开源语言模型&#xff0c;引领中文和英文benchmark Baichuan-13B是由百川智能开发的一个开源大规模语言模型项目&#xff0c;包含了130亿参数。该模型在中文和英文的权威ben…

mybatis学习笔记之核心配置文件详解

文章目录 核心配置文件内容多环境事务管理器对数据源的剖析JNDIPOOLED和UNPOOLED的区别配置具体的数据库连接池参数 propertiesproperties和mapper标签的url属性 核心配置文件内容 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configura…

【广州华锐互动】VR地铁消防逃生路线演练系统

随着城市轨道交通的不断发展&#xff0c;事故应急演练的重要性也越来越受到重视。而VR技术的应用&#xff0c;为地铁消防逃生路线演练带来了许多亮点&#xff0c;包括以下几个方面&#xff1a; 首先&#xff0c;VR技术可以提供高度真实的模拟场景。在传统的事故应急演练中&…

常见的计算机网络协议

1 协议分类 1.1 网络层协议 IP 、 ICMP、IGMP、IS-IS、IPsec、 ARP、 RARP、RIP、VRRP等 1.2 传输层协议 TCP、 UDP、TLS、SSL、OSPF 等 1.3 应用层协议 DHCP 、DNS 、FTP、 HTTP、POP3、 SNMP 、SSH 、TELNET 、 BGP 、GLBP、HSRP等 2 协议详解 2.1 IP协议 IP指网际互…

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化

vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化 1.监听dom元素的宽高变化 你可以使用Vue的指令v-on和v-bind来动态监听div的宽度。 首先&#xff0c;在Vue实例中声明一个data属性&#xff0c;用来存储div的宽度值。例如&#xff1a; data() {return {divWidth…