支付MQ消费场景改造

前言:这是一个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,消费做幂等

你可能感兴趣的:(java,rocketmq,kafka)