我心中的核心组件~MSMQ与Redis队列

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

这个文章其实是我心中的核心组件的第七回,确实在时间上有些滞后了,但内容并不滞后!本文MSMQ只是个引题,我确实不太想说它,它是微软自己集成的一套消息队列,寄宿在Window服务里,稳定性十在不敢恭维,而redis队列我们选择的驱动客户端是ServiceStack.Redis,之所以选择它就是因为它稳定,更新快,对于其它的驱动可能用上几年都不会去更新,而ServiceStack.Redis一直走到redis客户端的前沿!

Redis队列实时和非实时:这个说的实时和非实时主要针对的是消费者这边,消息生产者在生产消息后,Redis队列里存储了这些消息,而何时消费就是我们要关心的问题了,非实时是说,在后端有个轮训服务定时从队列里拿消息,这有一定的延时性;实时是说在消费者一边建立Tcp长连接,当队列有数据后马上消费它,当没有数据时线程处于挂起等待状态!

大叔实时消息队列的消费者实现(Redis队列)

      while (true)
            {
                var redis = Redis.Client.RedisManager.GetClient();//redis连接池

                if (redis.GetListCount("queue1") == 0) //消息为空挂起
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("队列为空,挂起1秒");
                    Thread.Sleep(1000);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("从队列拿出:" +
                    redis.PopItemFromList("queue1"));
                }

            }

大叔非实时消息队列的实现

非实时队列主要是在消费者一方采用了某种调度机制,定时去redis队列里去拿数据,逻辑没什么复杂的,大叔采用的调度组件还是Quartz.Net,原因是它功能强大,配置灵活,解耦能力比较强!

配合Cron表达式功能更强大

本文转自博客园张占岭(仓储大叔)的博客,原文链接:我心中的核心组件~MSMQ与Redis队列,如需转载请自行联系原博主。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
消息中间件 NoSQL Java
别再用 Redis List 实现消息队列了,Stream 专为队列而生
别再用 Redis List 实现消息队列了,Stream 专为队列而生
64 0
|
2月前
|
存储 NoSQL API
【小小思考】Redis实现去重任务队列
【2月更文挑战第1天】思考一下如何用Redis实现去重的任务队列,主要有List 、List + Set/Hash/Bloom Filter、ZSet、Lua和开源库等方式。
75 1
|
4月前
|
NoSQL Redis
redis队列
redis队列
28 0
|
6月前
|
消息中间件 NoSQL Java
Redis实现延迟队列,我研究了两种方案,发现并不简单
前段时间有个小项目需要使用延迟任务,谈到延迟任务,我脑子第一时间一闪而过的就是使用消息队列来做,比如RabbitMQ的死信队列又或者RocketMQ的延迟队列,但是奈何这是一个小项目,并没有引入MQ,我也不太想因为一个延迟任务就引入MQ,增加系统复杂度,所以这个方案直接就被pass了。
|
8月前
|
NoSQL Go Redis
Redis与异步队列
使用Redis可以很方便地实现异步队列。
61 0
|
8月前
|
NoSQL Go Redis
Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库
Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库
281 0
|
9月前
|
消息中间件 监控 NoSQL
RocketMq普通消息,死信队列,消息幂等性(redis)
RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。
170 0
|
9月前
|
存储 NoSQL Go
基于redis实现延迟队列
基于redis实现延迟队列
|
12月前
|
消息中间件 NoSQL JavaScript
用 Redis 实现延迟队列,我研究了两种方案,发现并不简单 下
用 Redis 实现延迟队列,我研究了两种方案,发现并不简单 下
|
12月前
|
消息中间件 NoSQL JavaScript
用 Redis 实现延迟队列,我研究了两种方案,发现并不简单 上
用 Redis 实现延迟队列,我研究了两种方案,发现并不简单 上

热门文章

最新文章