首页 程序笔记 EasyNetQ使用方法示例附源码

EasyNetQ使用方法示例附源码

使用Nuget安装EasyNetQ

本示例源码下载 http://www.leavescn.com/Files/downloads/MQTest.zip

创建连接:

使用EasyNetQ连接RabbitMQ,是在应用程序启动时创建一个IBus对象,并且,在应用程序关闭时释放该对象。

RabbitMQ连接是基于IBus接口的,当IBus中的方法被调用,连接才会开启。

发布消息Publish

bus1 = RabbitHutch.CreateBus(connectionStr);
var message = new MyMessage { Text = richTextBox1.Text };
//发布消息
bus1.Publish(message);

订阅消息Subscribe

bus2 = RabbitHutch.CreateBus(connectionStr);
//订阅消息
//点击按钮订阅,订阅后只要发布新的消息,收到消息后就会执行修改richTextBox2.Text的值
//用同一个subscribeid订阅了同一种消息类型两次或者多次,RabbitMQ会轮着给两个订阅发消息(两个订阅不会同时收到消息)
bus2.Subscribe<MyMessage>("subscribeid_1", (msg) => {
    string value = msg.Text;
    richTextBox2.Text += value+"\r\n";
});

可以自己定义队列名称的发送消息Send/接受消息Receive

发送消息Send

bus1 = RabbitHutch.CreateBus(connectionStr);
//发送端代码
bus1.Send("queuename_1", new MyMessage { Text = richTextBox3.Text });

接受消息Receive

bus2 = RabbitHutch.CreateBus(connectionStr);
bus2.Receive<MyMessage>("queuename_1", message => richTextBox2.Text += message.Text + "\r\n");

程序结束的时候关闭EasyNetQ使用的连接,渠道,消费者和所有其他资源。本示例中在窗口关闭时,关闭连接。

private void Form1_FormClosed_1(object sender, FormClosedEventArgs e)
{
    if (bus1 != null)
    {
        bus1.Dispose();
    }
    if (bus2 != null)
    {
        bus2.Dispose();
    }
    if (bus3 != null)
    {
        bus3.Dispose();
    }
}

以上是EasyNetQ的publish,Subscribe,Send和Receive基本用法。

登录RabbitMQ管理后台队列里可以看到

执行bus2.Subscribe<MyMessage>("subscribeid_1", (msg) =>{});订阅时,如果是第一次订阅,Queues队列里会增加一个名为MQTest.MyMessage, MQTest_subscribeid_1的队列。

执行bus1.Send("queuename_1", obj);发送时,如果不存在queuename_1队列时,会增加一个名为queuename_1的队列。

执行bus5.Receive<MyMessage>("queuename_2", message => {});接受消息时,如果不存在queuename_2队列时,会新增一个名为queuename_2的队列。

2

站心网

使用Nuget安装EasyNetQ本示例源码下载 http://www.leavescn.com/Files/downloads/MQTest.zip创建连接:使用..

为您推荐

软件产品开发中常见的10个问题及处理方法

常见的10个问题#产品开发中常见的10个问题思维导图需求相关#1. 需求不明确#在日常工作中,需求来源于用户、老板、客户、竞品分析、业务部门、产品经理等,这些人或部门会提出需求,因为他们不是产品经理,提出的需求..

彩虹目录列表程序v1.5源码下载

彩虹目录列表是一款用PHP开发的目录列表程序,无需数据库,安装简单,使用方便。功能特点:在线预览图片、视频、音频、文本文件、Markdown文件、Office文档等自动识别目录下的README.md文件并展示(类GitHub)后台管..

新版彩虹工具网源码v1.9.0更新

新版彩虹工具网采用ThinkPHP6.0开发,自带70多个工具,包含站长工具、开发工具、实用工具、娱乐工具等分类,支持工具插件扩展,支持留言、用户注册登录、后台管理功能。目前已经更新到了1.9版本,新增了QQ等级查询、..

一个提升运营/营销转化率的万能方法!

之前,笔者有分享过说我最喜欢的增长是可复制可持续的增长,它一般都会有三个关键过程:首先是小范围测试,低成本试错,也就是最小可行性验证,让ROI最大化。然后是把测试的最优结果整理为可执行的标准化化流程。前..

学习最重要是方法,管理最重要是高度

技术学习要兼顾深度和广度夯实技术基础这么多年来,我面试了很多人。我越发感到「技术基础」非常重要。很多技术的本质是一样的。技术基础足够好的话,学东西可以非常快。往下到操作系统层面,甚至计算机硬件层面,你..

Java中String类常见的方法

以下介绍字符串常见的几个方法。介绍String类在 Java 中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实..

使用 html2canvas 实现截图功能

html2canvas 是一个开源的 JavaScript 库,用于将网页上的 HTML 元素渲染成图像。它通过遍历页面的 DOM 树和计算样式,然后将其绘制到 <canvas> 元素上,最终生成图片。该库不依赖服务器端,而是通过浏览器端的 Java..

一个简单的大转盘抽奖程序(附.NetCore Demo源码)

最近闲下来在做一些demo,现在讲一下做的一个简单的大转盘抽奖demo,前端lottery,layui,后端.net core,sqlsugar,数据库用的mysql1.前端实现:前端用的是基于开源的lottery,其中有些改动的,使得前端可以自适应pc端..

使用SuperWebSocket实现Web消息推送

在大部分Web系统中,我们可能遇到需要向客户端推送消息的需求。SuperWebSocket第三方库能让我们轻松的完成任务。SuperWebSocket第三方库可以从网上下载,不过通过Visual Studio Nuget安装更快。引用SuperWebSocket相..

.NET C# 使用Hook钩子实现全局监听键盘和鼠标

C# 是一种面向对象的编程语言,具有丰富的类库和工具支持,适用于各种类型的应用程序开发。Windows 提供了一种称为"钩子"(Hook)的机制,允许拦截并处理系统级别的事件,如键盘按键和鼠标移动。通过结合 C# 和 Hook..

C#使用 Attribute 实现 AOP 功能

在 C# 中,通过自定义 Attribute 并结合一些技术(如动态代理、反射等)可以实现 AOP(面向切面编程)。AOP 通常用于日志记录、性能监控、权限验证等横切关注点。以下是一个使用 C# Attribute 实现 AOP 功能的示例。..

ABP.Net Core使用教程(一)启动模版项目

只需要简单的3步:1,到官网下载模版项目 https://aspnetboilerplate.com/Templates2,用VS2017打开,将Web.Host设置为启动项3,在程序包管理器控制台(Nuget控制台)里设定默认项目为EntityFrameworkCore,执行命令..

.net 通过 HttpClient 下载文件同时报告进度的方法

通过 HttpClient 的 ContentLength 很多时候都可以拿到下载的内容的长度,通过 ReadAsync 可以返回当前读到的长度,将读取到的长度加起来就是已经下载的长度看起来很简单,于是直接给代码private static async Task ..

C#中的线程安全的集合ConcurrentQueue使用示例

在多线程编程中,如何安全地在不同线程之间共享数据是一个非常重要的问题。C# 为我们提供了一些专门设计的线程安全集合,其中之一就是 ConcurrentQueue<T>。它是一种先进先出(FIFO)的数据结构,专门为多线程环境设..

CSS砌体布局示例和使用场景

CSS砌体布局(Masonry Layout)CSS砌体布局是一种网页布局技术,它的灵感来源于砖石墙的排列方式,类似于“拼图”或“拼砖”的效果。在砌体布局中,元素的排列并不完全遵循传统的网格布局规则,..

使用CSS columns-visibility实现砌体布局

CSS的 columns 属性(如 columns、column-count 和 column-width)通常用于多列文本布局,而不是直接用于砌体布局。然而,结合 columns 和 visibility 属性,可以在某些情况下实现类似砌体布局的效果,虽然它并不完..

使用System.Linq.Dynamic.Core扩展库动态构建 LINQ 查询

System.Linq.Dynamic.Core 是一个扩展库,用于在运行时动态构建 LINQ 查询,支持字符串形式的表达式解析和动态查询操作。它是 .NET 的一个强大工具,适合处理需要灵活定义查询逻辑的场景,例如动态过滤、排序、投影..

SQL语句中的EXISTS用法示例

EXISTS 是 SQL 中用于判断子查询是否返回结果的关键字。它通常用于 WHERE 子句中,结合子查询一起使用。如果子查询返回至少一行数据,EXISTS 会返回 TRUE,否则返回 FALSE。EXISTS 用法示例假设有两个表:employees..

小米开源智能家居平台 ha_xiaomi_home 使用示例

小米近期在 GitHub 上开源了名为“ha_xiaomi_home”的项目,即 Home Assistant 米家集成组件。该组件由小米官方支持,旨在让用户在 Home Assistant 中集成和控制小米 IoT 智能设备。主要特点:官方支持:..

C#13新特性 使用System.Threading.Lock简化线程同步

C# 13 引入了新的线程同步类型 System.Threading.Lock,它通过作用域管理的方式简化了锁的使用,使代码更加清晰可靠。本文将全面介绍 System.Threading.Lock 的功能、适用场景,并提供完整的运行示例程序。1. 什么是..

发表回复

返回顶部