首页 > 其他分享 >.netcore 中高性能队列Channel的应用与封装

.netcore 中高性能队列Channel的应用与封装

时间:2023-07-29 11:35:48浏览次数:33  
标签:封装 netcore 队列 处理 Channel 消息 channel

           Channel存在于命名空间System.Threading.Channels中,是.net一种新型的线程安全集合,提供了发布和订阅消息处理功能,在一个服务中若接收消息和处理消息都很频繁,且处理消息耗时较长时,Channel是一种好的处理方式。

1、创建Channel方式(支持泛型消息格式)

 支持5种创建方式:

capacity是存储的容里,BoundedChannelFullMode支持4种模式,本文默认为DropOldest

2、发布消息 

通过channel的Writer异步方法

 3、消费消息

通过channel的Reader方法持续等待接收消息(while非阻塞读取)

4、channel消息队列的封装

安装nuget包Feather.Threading.Channels,通过IServiceCollection注入服务, 注入方式:services.InitChannelService()。

发布消息:在需要发布消息的类中注入通道IChannelMsg<发布的消息实体>,即可利用channel发布消息。

 

 

订阅消息:通过IApplicationBuilder中订阅消费事件,在事件中执行消息处理功能。

 

标签:封装,netcore,队列,处理,Channel,消息,channel
From: https://www.cnblogs.com/zxsn2014/p/17300153.html

相关文章

  • .NetCore中dump文件的创建和分析
    1、通过程序生成dump文件  安装nuget包:Microsoft.Diagnostics.NETCore.Client  生成dump文件代码:  varclient=newDiagnosticsClient(Environment.ProcessId);client.WriteDump(DumpType.Full,Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"dumps","1.dump&quo......
  • docker aspnetcore学习笔记
    在终端窗口cmd:  示例应用程序对于示例应用程序,让我们使用.NET从模板创建一个简单的应用程序。在本地计算机中创建一个名为的目录。打开终端并切换到该目录。运行以下命令,使用ASP.NET核心Web应用模板创建C#应用。$mkdirdotnet-docker$cddotnet-docker$dotne......
  • 封装请求
    importunittest,requestsimportyamlfromcommon.myloggerimportloggerclassBasecase(unittest.TestCase):defrequest_token(self):passdefrequest(self,method,url,params=None,data=None,json=None,**args):method=method.upper()if......
  • ASEMI快恢复二极管MUR2080CTR封装, MUR2080CTR图片
    编辑-ZMUR2080CTR参数描述:型号:MUR2080CTR最大峰值反向电压(VRRM):800V最大RMS电压(VRMS):430V最大直流阻断电压VR(DC):800V平均整流正向电流(IF):20A非重复峰值浪涌电流(IFSM):150A工作接点温度和储存温度(TJ,Tstg):-55to+150℃最大热阻(RθJC):3℃/W正向电压(VF):2V最大瞬......
  • 看看Vue中如何封装一个自动化注册全局组件
    在项目的开发过程中,我们常常会去封装一些比较常用的全局组件,但是每添加一个组件就需要手动在main.js引入注册,不仅麻烦还代码量多,着实让人心烦。所以干脆封装一个自动化注册全局组件。1、自定义全局组件文件夹在src下新建一个globalComponents,用于存放全局组件,并新建一个组件,例......
  • VS 还原 NuGet 程序包时出错: 无法加载源 https://dotnet.myget.org/F/aspnetcore-dev
    错误还原NuGet程序包时出错:无法加载源https://dotnet.myget.org/F/aspnetcore-dev/api/v3解决方法在新源中添加地址:https://www.nuget.org/api/v2/......
  • MD5加密的基本常识和封装类
    MD5加密的基本常识和封装类MD5(MessageDigestAlgorithm5)是一种常见的哈希算法,用于将任意长度的数据转换为固定长度的(通常是128位或16字节)哈希值。它是MD家族中的第五个算法,广泛用于数据校验、数字签名、密码存储等领域。MD5是单向函数,即无法从生成的哈希值反推出原始数据,这也是......
  • AES加密的基本常识和封装类
    AES加密的基本常识和封装类AES(AdvancedEncryptionStandard)是一种对称密钥加密算法,被广泛用于保护敏感数据的安全性。它是一种块加密算法,意味着它将明文数据分成固定大小的块,并使用相同的密钥对每个块进行独立加密。AES算法支持不同的密钥长度,包括128位、192位和256位密钥。一......
  • DES加密的基本常识和封装类
    DES加密的基本常识和封装类DES(DataEncryptionStandard)是一种对称加密算法,它是在1977年由IBM所提出,并在1981年被美国国家标准局(NIST)确定为数据加密标准。DES使用相同的密钥对数据进行加密和解密,因此属于对称加密算法。虽然DES在过去被广泛使用,但由于其较短的密钥长度(56位)导致了......
  • RSA加密的基本常识和封装类
    RSA加密的基本常识和封装类RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数据加密、数字签名和密钥交换等领域。在RSA加密封装中,主要涉及生成密钥对、加密和解密的过程。一、RSA加密封装的过程1.生成密钥对:RSA算法使用一对密钥,包括公钥和私钥。公钥用于加密数据,......