Asp.net core中RedisMQ的简单应用实现
|
这篇文章主要介绍了Asp.net core中RedisMQ的简单应用实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近一个外部的项目,使用到了消息队列,本来是用rabbitmq实现的,但是由于是部署到别人家的服务器上,想尽量简化一些,项目中本来也要接入了redis缓存,就尝试使用redis来实现简单的消息队列。 使用redis做消息队列有两种方法,一种是使用pub/sub,另一种是使用list结构,配合brpop来消费。这两种方式各有特点,这里简述一下: pub/sub模式,支持多客户端消费,但是不支持持久化,这就意味着客户端断开的时间内发布的消息将会全部舍弃掉。 list配合brpop,默认不支持多客户端消费,支持持久化。这种模式的多客户端消费可以变相实现,比如下面的伪代码: #第一步push消息到队列 消息丢失不太可取,所以我选择了list ,下一步需要选择一个合适的客户端。 Stackexchange.redis 算是一个老牌的客户端了,但是由于其采用多路复用的模式,没法支持Redis的blocking pops特性。所以我采用了国人写的CSRedisCore。 首先需要在appsettings.json中添加redis的连接字符串: { 具体配置请参考github上的文档:https://github.com/2881099/csredis 然后在startup.cs的ConfigureServices中配置redis: public void ConfigureServices(IServiceCollection services) 当然也可以采用依赖注入的方式添加CSRedisClient实例,这个不纠结。 在项目中有好几处使用到了队列,所以先封装一个消费服务: public abstract class RedisMQConsumer : BackgroundService protected ILogger<RedisMQConsumer> logger; public RedisMQConsumer(ILogger<RedisMQConsumer> logger) protected override Task ExecuteAsync(CancellationToken stoppingToken) protected abstract bool Process(string message); 然后就可以继承RedisMQConsumer,编写实际逻辑: public class AddOrderMQConsumer : RedisMQConsumer 发布消息只是往队列中添加项: RedisHelper.LPush("addOrder", order); 最后把消费服务添加到startup.cs中: public void ConfigureServices(IServiceCollection services) 经测试,还算稳定,小并发项目可以使用。 到此这篇关于Asp.net core中RedisMQ的简单应用实现的文章就介绍到这了,更多相关Asp.net core RedisMQ内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 来源:脚本之家 链接:https://www.jb51.net/article/201718.htm (编辑:安卓应用网_ASP源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
