支付MQ消费场景改造

发布时间:2023年12月31日

前言:这是一个MQ消费程序的业务优化改造场景,我们支付服务的消费方,主要功能是根据规则过滤一些消息,继而处理剩下的消息

? ? ? ? 消息来源:框架监听binlog后向kafka中写入消息(只监听新增)

背景:现有一个topicA ,kafka(消息体中有一个:userId字段),日两亿消息

生产方:其他服务

现状:5个库(4个业务库+1个灰度库),每个库拥有4个服务节点,共计20个服务节点,所有节点作为一个消费集群共同消费topicA的消息

? ? ? ? ? 5个库名字分别为01、02、03、04、99(灰度库)

现需改造:5个库根据规则各自消费自己应处理的数据

? ? ? ? ? ? ? ? ? eg:1库消费ID尾号为00-24的客户消息,2库消费25-49的客户消息

限制:

????????1、生产方一个topic不能增加,消息头 体什么都不能改

????????2、节约成本,不再新加机器


方案:

????????1. 新增5个topic,分别为:topic01、topic02、topic03、topic04、topic99

????????2. 5个库在消费topicA的前提下?再消费新增的对应topic(01库多消费一个topic01)

????????3. topicA现有消费逻辑改造:

????????????????i. 消费后,比对消息体中userId,和自身能处理的区间值配置

????????????????ii: 相同则按之前流程正常处理,不相同则根据配置发送到 新增的topic中(userId尾号为01则发送到topic01中)

????????????????

注:为了避免从topicA消费后异步写入新topic时消息丢失,我们有做双MQ方案,kafka写入失败后会写入备用MQ,消费做幂等

文章来源:https://blog.csdn.net/weixin_44700876/article/details/135262847
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。