.Net Core应用RabbitMQ,及简单封装
首先,还是万分感谢大家能够抽空来阅读我的文章,万分感谢。今天我带来的是.Net Core中应用RabbitMQ,和简单封装。因为昨天的文章里说了今天要写,所以今天一定要写出来。小编翻阅了很多资料,想要设计些一个能满足自己需求,也方便扩展,同时保证安全的简单封装。之中翻到一篇很经典的文章,如果你使用RabbitMQ只是为了处理高并发,让消息可以异步处理的话,可以使用下面这个链接。因小编现在做的都是为了自己的分布式架构服务,中间需要实现实时通讯,这个并不是很适合小编。所以小编自己封装了一个,但是大家也可以参考。https://mp.weixin.qq.com/s/Hj5R09StmMgRiCDnf-zLVw小编下面会直接贴图,代码会附在源码上,如不了解RabbitMQ的基本使用方式可以另行查找。首先编写一个RabbitMQHelper,我们在构造函数里创建连接工厂,连接,通道,交换机。建议写进配置文件里,便于后期维护。
然后我们用泛型的方式来编写SendMsg方法,泛型的好处这里不多说了
接着是Receive方法,这里我没有使用泛型,是返回出去的直接是字符串,为了适应不同的业务场景,可以自定义序列化。
这里使用了委托的方式,是为了将业务和Helper类分开,便于支持其他业务。
细心的同志们会发现,构造函数里设置了交换机名,函数里设置了队列名,这样的设计是为了编写下面的MQHelperFactory。在这里我们可以自定义各个交换机,也方便调用,而且可以掩饰我们用的是RabbitMQ,降低后期更换其他MQ中间件对开发的影响。
然后,我们就编写完了,实际调用只有一行代码,接受消息也是使用了委托的方式,分离的很好。如果担心每次创建会影响效率,那么可以使用单例模式,或者IOC使配合单例模式使用。这里就不一一介绍,请大家根据自己的业务场景设计。
源码地址:
https://github.com/SkylerSkr/RabbitMQHelper
.Net Core应用RabbitMQ,及简单封装的更多相关文章
- RabbitMQ的简单封装
一般在工作中,都是直接使用已经封装好的mq的程序集进行功能开发.所以很多时候都没有去了解rabbitmq到底是如何封装(实现使用的).所以心血来潮,简单记录下自己对rabbitmq的简单封装 整体的思 ...
- DotNet Core 使用 StackExchange.Redis 简单封装和实现分布式锁
前言 公司的项目以前一直使用 CSRedis 这个类库来操作 Redis,最近增加了一些新功能,会存储一些比较大的数据,内测的时候发现其中有两台服务器会莫名的报错 Unexpected respons ...
- .net core 中简单封装Dapper.Extensions 并使用sqlsuger自动生成实体类
引言 由公司需要使用dapper 同时支持多数据库 又需要支持实体类 又需要支持sql 还需要支持事务 所以采用了 dapper + dapperExtensions 并配套 生成实体类小工具的方 ...
- .net core使用rabbitmq消息队列
看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...
- Spring jdbc 对象Mapper的简单封装
一般查询实体的时候,都需要这么使用/** * 根据id查询 * * @return */ public Emp queryEmpById(Intege ...
- .NET Core 使用RabbitMQ
RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的 ...
- [.Net Core] 在 Mvc 中简单使用日志组件
在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...
- net core 使用 rabbitmq
windows环境安装: https://www.cnblogs.com/ericli-ericli/p/5902270.html .NET Core 使用RabbitMQ https://www.c ...
- MongoDB Python官方驱动 PyMongo 的简单封装
最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...
随机推荐
- Xcode 及 iOS 常用宏和常量
Xcode Xcode 工程设置支持 bash 脚本及其语法,如 $(PROJECT_DIR)$(PROJECT_DIR) PROJECT_DIR 代表当前工程的绝对路径,所以 $(PROJECT_D ...
- rabbitmq windows安装 及 centos安装
windows安装如下: 安装方法如下网址: https://baijiahao.baidu.com/s?id=1605656085633071281&wfr=spider&for= ...
- 创建工程时出现 A project with this name already exists 提示
https://segmentfault.com/a/1190000018513060 创建项目时没注意,后来发现放错了位置或其他问题,想要重新创建同名项目,只在文件夹处删除是不行的.会出现以下提示 ...
- 【学术篇】bzoj2440 [中山市选2011]完全平方数
-题目の传送门- 题目大意: 找到第k个无平方因子数. 看到数据范围很大, 我们要采用比\(O(n)\)还要小的做法. 考虑如果前\(x\)个数中有\(k-1\)个无平方因子数, 而前\(x+1\)个 ...
- mongodb 自增序列实现
MongoDB没有像SQL数据库外开箱即用自动递增功能.默认情况下,它采用了12字节的ObjectId为_id字段作为主键来唯一地标识文档.然而,可能存在的情况,我们可能希望_id字段有一些其它的自动 ...
- 解决 linux 下安装 node 报: command not found
注意:有时安装成功后,需要关闭xshell,重新启动.nvm才会生效. 1. 在 linux 下安装 node 提示 -bash: node: command not found. 2. 这种情况可 ...
- onclick 调用js选择器
- JS中算法之检索算法(查找算法)
顺序查找 查找指定值 function seqSearch(arr, data) { for (var i = 0; i < arr.length; ++i) { if (arr[i] == d ...
- BZOJ 3772: 精神污染(dfs序+主席树)
传送门 解题思路 比较神仙的一道题.首先计算答案时可以每条路径所包含的路径数,对于\(x,y\)这条路径,可以在\(x\)这处开个\(vector\)存\(y\),然后计算时只需要算这个路径上每个点的 ...
- Luogu P1478 陶陶摘苹果
Luogu P1478 陶陶摘苹果(升级版) 题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2 ...