KSO-在NETCore中RabbitMQ的使用以及相关代码
安装与配置
下载地址
Erlang https://www.erlang-solutions.com/resources/download.html
rabbitMQ http://www.rabbitmq.com/download.html
其实坑很多的,要找到对应的版本号
配置方法:
• 安装完事儿后要记得配置一下系统的环境变量。
此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量
变量名:ERLANG_HOME
变量值就是刚才erlang的安装地址,点击确定。
然后双击系统变量path
点击“新建”,将%ERLANG_HOME%\bin加入到path中。
• 最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。
• 双击下载后的.exe文件,安装过程与erlang的安装过程相同。
• RabbitMQ安装好后接下来安装RabbitMQ-Plugins。打开命令行cd,输入RabbitMQ的sbin目录。
我的目录是:D:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.3\sbin
然后在后面输入rabbitmq-plugins enable rabbitmq_management命令进行安装
等几秒钟看到这个界面后,访问http://localhost:15672
默认用户名和密码都是guest
生产者代码
生产:
ConnectionFactory connection = new ConnectionFactory();connection.HostName = "localhost";connection.UserName = "guest";connection.Password = "guest";using (var models= connection.CreateConnection()){//创建一个信道using (IModel channel = models.CreateModel()){//删除一下channel.ExchangeDelete("kso");channel.QueueDelete("queuekso1");channel.QueueDelete("queuekso2");// 创建交换机channel.ExchangeDeclare("kso",ExchangeType.Direct);//创建队列channel.QueueDeclare("queuekso1",true,false,false);channel.QueueDeclare("queuekso2",true,false,false);//绑定channel.QueueBind("queuekso1","kso","advancd");channel.QueueBind("queuekso2","kso","advancd");Console.BackgroundColor = ConsoleColor.Blue;for (int i = 0; i < 1000; i++){IBasicProperties basicProperties = channel.CreateBasicProperties();basicProperties.Persistent = true;channel.BasicPublish("kso","advancd", basicProperties,Encoding.UTF8.GetBytes("这是一个生产这生产的消息"+i)) ;Console.WriteLine("这是一个生产这生产的消息" + i);}while (true){Console.WriteLine("输入消息!");string name = Console.ReadLine();IBasicProperties basicProperties = channel.CreateBasicProperties();basicProperties.Persistent = true;channel.BasicPublish("kso","advancd",basicProperties,Encoding.UTF8.GetBytes("这是自己输入的消息"+name));Console.WriteLine("这是自己输入的消息"+name);}
消费者代码
public void Customtion(){var factory = new ConnectionFactory();factory.HostName = "localhost";//RabbitMQ服务在本地运行factory.UserName = "guest";//用户名factory.Password = "guest";//密码 using (var connet = factory.CreateConnection()){using (var channel = connet.CreateModel()){//创建交换机channel.ExchangeDeclare("kso", type: ExchangeType.Direct, durable: false, autoDelete: false, arguments: null);channel.QueueDeclare("queuekso1", true, false, false, null);channel.QueueDeclare("queuekso2", true, false, false, null);channel.QueueBind("queuekso1", "kso", "advancd", null);channel.QueueBind("queuekso2", "kso", "advancd", null);RabbitMQ.Client.Events.EventingBasicConsumer eventingBasicConsumer = new RabbitMQ.Client.Events.EventingBasicConsumer(channel);eventingBasicConsumer.Received += (sender, e) =>{var boy = e.Body;Console.WriteLine(Encoding.UTF8.GetString(boy.ToArray()));};channel.BasicConsume(queue: "queuekso1", autoAck: true, consumer: eventingBasicConsumer);channel.BasicConsume(queue: "queuekso2", autoAck: true, consumer: eventingBasicConsumer);Console.WriteLine(" 结束了");Console.ReadKey();}}}
RabbitMQ事务支持
生产者的简单事务代码channel.ConfirmSelect();channel.BasicPublish("kso", item.LogType, properties, item.Msg);Console.WriteLine(Encoding.UTF8.GetString(item.Msg));if (channel.WaitForConfirms()) //如果一条消息或多消息都确认发送,{Console.WriteLine($"【{item}】发送到Broke成功!");}else{//可以记录个日志,重试一下;}channel.WaitForConfirmsOrDie(); 这个代表着发送消息如果失败则直接关闭信道不能再次尝试消费者事务支持
//如果在这里处理消息的手,异常了呢? //Console.WriteLine($"接收到消息:{message}"); ; if (i < 50){//手动确认 消息正常消费 告诉Broker:你可以把当前这条消息删除掉了channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);Console.WriteLine(message);}else{//否定:告诉Broker,这个消息我没有正常消费; requeue: true:重新写入到队列里去; false:你还是删除掉;channel.BasicReject(deliveryTag: ea.DeliveryTag, requeue: true);}
KSO-在NETCore中RabbitMQ的使用以及相关代码相关推荐
- MITK中窗宽窗位相关代码
目录 1 基本数据结构Image 2 窗宽窗位mitkLevelWindow定义类 3 窗宽窗位自动设定算法 4 窗宽窗位的属性设置LevelWindowProperty 类 5 mitkDi ...
- 基于NetCore的RabbitMQ使用
由于最近公司做的项目,需要发短信/邮件/第三方接口异步回调信息等的及时处理,自己就简单的研究了以下RabbitMQ在NetCore中的实现. RabbitMQ是什么具体就不再这里详细介绍了,自己去百度 ...
- 如何访问Linux服务器中RabbitMQ管理页面
大家好,本篇文章主要讲的是解决访问不到Linux服务器中RabbitMQ管理页面问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 由于自己项目的某项功能需要服务器中发送消息到 ...
- .NET中RabbitMQ的使用
.NET中RabbitMQ的使用 概述 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统. ...
- 如何在 .NETCore 中修改 QueryString ?
咨询区 vcsjones: 我有一个绝对路径的 url 包含了 querystring,现在我想对 querystring 进行修改和添加,我不想生硬的用字符串提取,或者是 正则表达式,而且还有恶心的 ...
- 跟我一起学.NetCore之Asp.NetCore中集成Autofac扩展
前言 前两节针对.NetCore自带的依赖注入进行简要概述,对于日常开发的需求应该是能满足了,那为什么还需要引入第三方依赖注入组件呢,这里就从自带的依赖注入来分析,有什么样的需求满足不了?主要归纳为以 ...
- 深入剖析.NETCORE中CORS(跨站资源共享)
前言 由于现代互联网的飞速发展,我们在开发现代 Web 应用程序中,经常需要考虑多种类型的客户端访问服务的情况:而这种情况放在15年前几乎是不可想象的,在那个时代,我们更多的是考虑怎么把网页快速友好的 ...
- .NetCore中三种注入生命周期的思考
.NetCore彻底诠释了"万物皆可注入"这句话的含义,在.NetCore中到处可见注入的使用.因此core中也提供了三种注入方式的生命周期使用,分别是: AddTransient ...
- Java笔记-Spring中RabbitMQ的调用
目录 基本概念 代码与演示 基本概念 Spring中已经整合了RabbitMQ,通过配置bean文件,然后在源码中加载,可以简化代码操作. 身为C++程序员不得不说这种方式真的是太爽了. 在本人做过的 ...
最新文章
- [喵咪的Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定
- BZOJ 4025 二分图
- 改变电子商务行业的5种人工智能趋势
- windows下面的txt在linux下面显示为乱码
- linux启动tongweb命令,linux7开机自启动东方通tongweb
- scrapy-实现下一页请求, scrapy.Request
- LUOGU P3919 【模板】可持久化数组(主席树)
- Unity Odin从入门到精通(五):自定义处理器
- 路由器网口1一直闪烁正常吗_路由器灯怎么闪才正常
- java将silk文件转换成MP3
- ubuntu20.04安装小鹤双拼输入法挂接音形改简体中文Rime
- Codeforces Round #322 (Div. 2) B. Luxurious Houses 水题
- 机器学习训练过程中常见问题
- 层(Overlays)
- 渲染函数render
- 知网、万方paperfree 查重的区别
- C#学习(十五)——窗体控件用法大全
- 计算机职称照图片,全国职称计算机报名如何上传照片。怎么提示你无需上传照片。可以直接进行报名呢...
- 基于R的FP树fp growth 关联数据挖掘技术在煤矿隐患管理
- SAP 系统使用技巧汇总