[发明专利]一种基于Redis的Kafka消息唯一性方法有效
申请号: | 201610492940.6 | 申请日: | 2016-06-29 |
公开(公告)号: | CN106170013B | 公开(公告)日: | 2019-06-07 |
发明(设计)人: | 马自谦;范桢 | 申请(专利权)人: | 上海浦东发展银行股份有限公司信用卡中心 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 上海科盛知识产权代理有限公司 31225 | 代理人: | 翁惠瑜 |
地址: | 200122 上海市浦东新区中*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种基于Redis的Kafka消息唯一性方法,利用Redis解决Kafka中消息重复消费的问题,所述方法包括下列步骤:Kafka接收消息数据;采用分布式选举算法,对接收的消息数据进行过滤;对过滤后的消息数据进行业务逻辑处理;判断业务逻辑处理是否出错,若是则删除业务逻辑处理出错的消息数据,若否则正常结束。与现有技术相比,本发明具有避免消息重复消费、吞吐量高以及可靠性高等优点。 | ||
搜索关键词: | 一种 基于 redis kafka 消息 唯一 方法 | ||
【主权项】:
1.一种基于Redis的Kafka消息唯一性方法,利用Redis解决Kafka中消息重复消费的问题,其特征在于,所述方法包括下列步骤:1)接收一组消息数据;2)采用分布式选举算法,对步骤1)接收的消息数据进行过滤;3)分别对过滤后的每条消息数据进行业务逻辑处理;4)判断步骤3)中的业务逻辑处理是否出错,若是,则进入步骤5),若否,则正常结束;5)删除出错的消息数据条目;所述步骤2),采用分布式选举算法进行过滤具体为:21)为接收到的每个消息数据设置对应的一个UUID;22)将同一消息数据分别发送至N个Redis中;23)对N个Redis中的同一消息数据分别调用SETNX命令,记m为大于N/2的最小整数;24)判断是否有m或大于m个SETNX命令的返回值为0,若是,则过滤该消息数据,若否,则保留该消息数据;所述SETNX命令包括key和value,调用所述SETNX命令时,将消息数据对应的UUID赋值给key,将当前时间赋值给value;所述步骤23),调用SETNX命令后,判断key在Redis中是否已存在,若是,则返回值为0,若否,则返回值为1。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海浦东发展银行股份有限公司信用卡中心,未经上海浦东发展银行股份有限公司信用卡中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610492940.6/,转载请声明来源钻瓜专利网。