请教一下各位,在 toB saas 系统开发中,大家是如何用好消息队列的,生产环境里实践过的。

场景一、 一般而言,toB 系统业务逻辑比较复杂,涉及使用事务的东西也比较多,这种是不是时候用消息队列如 kafka 之类的做流式处理,做业务解耦, 比如具体到一个很小的例子,在一个接口中处理如下业务逻辑 查询 A 业务表数据 -> 查询 B 业务表数据 -> 更新 A 业务表数据 -> 更新 B 业务表数据 -> 还有一些后续的逻辑处理(比如写入统计数据、发送短信等等),这里面加入队列来解耦,有比较好的实践么,为了某些一致性考虑,需不要要把加入队列包在事务里,如果加入队列失败,需不要把数据库操作回滚。

场景二、系统很多延时消息之类的,比如 xxx 时间点,提醒某某人做 xxx 事,这个时间点还经常变化,这种有么有用 kafka 去自己做延时消息的(后端是 php 技术栈)。

讨论数量: 1

因为不知道具体业务场景是什么,这里随便说一下自己的看法:
1、消息队列用来解耦业务的耦合确实可以用,如果对消息的可靠性有要求的话可以尝试用RabbitMQ,因为相对kafka来说它是消息可靠的。
2、某个时间提醒某人做某事,不知道kafka是如何处理的(因为目前一直在看RabbitMQ相关的,还没来得及去了解),但是RabbitMQ的延时处理是某个队列的延时时间在申明完延时队列之后就固定的,不会变动。这个RabbitMQ可能不好应对。但是我知道的可以使用Redis的有序集合去处理这件时间,不过需要写一个脚本。

3年前 评论
rainbow-xyz (楼主) 3年前
so_easy (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!