发布了一个基于 redis 的 node 版本的 mq。简单耐用。欢迎大家试用下哈
发布于 4 年前 作者 WenNingZhang 5331 次浏览 来自 分享
9 回复

简单看了下,如有错误请别见怪 1、通过zdd排序,hset设置的消息。没看到删除。 2、hash存放数据key过多的情况下没看到分组。 3、消息多个订阅者情况、以及消息处理失败。

@wangkunmeng hi 先谢谢你的指点哈 1、这是mq。消息的删除是在消费后删除的,你如果仔细看代码是通过一段lua脚本删除的。 2、暂时没考虑分组的意义是啥? 如果是怕field-value 数量的限制,也有2^32-1 个。应该是够用的。 3、暂时确实还没想用发布-订阅的模型,后期可能会考虑。现阶段只支持点对点(queue)的模型。消息处理失败的这种情况确实没考虑过,这点容我想下再回答。

bull 不香吗,不用重复造轮子,遇到问题可以一起造。

@riichg5 这个 bull 或者 Agenda 之类是属于 队列(queue)。ioredisMq的是 mq。我觉得还是有本质的区别的。 另外说下发布这个依赖的原因,其实和 rsmq功能类似,但是 rsmp 是基于 redis 这个依赖。我们有个项目中代码依赖于ioredis这个项目,如果使用rsmp 。还需要多安装一个依赖 redis,这是我比较厌烦的。另外rsmp中有发送消息不可见的功能(vt参数控制),个人觉的比较鸡肋,消息处理完成后,直接删除就行了。因此基于上面两个问题开发了 ioredismq。

@riichg5 英语水平太差,一个月前研究了会没看懂文档和Demo在讲啥…中文科普有点少。后来就看了AMQP资料,感觉还是RabbitMQ可能更方便点。

@wangkunmeng 个人觉的,数据量小的情况下,向 redis 这种 mq 是可以解决的。如果需要数据量大的mq。kafka 或者RabbitMQ可以考虑下,毕竟是这些都是分布式的mq。量少的话就没必要了。

@WenNingZhang 嗯,基于redis list的brpop和push也做了一个简单的消息暂存、排队

@WenNingZhang bull 也可作为消息队列的

@wangkunmeng bull 在基于redis的消息队列里面,属于node里面非常成熟的一款,并且非常轻量。适合中小规模的消息处理中间件。我非常推荐使用。之前我还用过kue,没有bull成熟。我最早接触到的用redis做消息队列组件,比较成熟的是ruby里面的sidekiq,以前sidekiq是免费的,现在开始做收费了。node的bull不比当年我使用的sidekiq差。 bull真的好用,哈哈

回到顶部