MQ消息队列幂等性和顺序性-创新互联
如何保证消息队列的幂等性
当前名称:MQ消息队列幂等性和顺序性-创新互联
文章源于:http://pwwzsj.com/article/cecepp.html
一个数据或者一个请求,重复操作多次,得确保对应的数据是不会改变的。一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。
创新互联公司长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为邢台县企业提供专业的网站设计制作、成都做网站,邢台县网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。如何保证消息消费的幂等性
向数据库写库,先根据主键查一下,如果这数据已经有了,就别插入了,update一下。如果是写Redis,那没问题了,反正每次都是set,天然幂等性。
稍微复杂一点,比如生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id之类的东西,然后消费到了之后,先根据这个id去比Redis里查一下,之前消费过吗?如果没有消费过,就处理,然后这个id写Redis。如果消费过了,那就别处理了,保证别重复处理相同的消息即可。
比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。Kafka有个offset的概念,就是每个消息写进去,都有一个offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset提交一下,表示“我已经消费过了,下次要是重启什么的,就从上次消费到的 offset来继续消费”。
有这么个场景。数据 1/2/3 依次进入 Kafka,Kafka 会给这三条数据每条分配一个 offset,
代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 Kafka
去消费的时候,也是按照这个顺序去消费。假
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前名称:MQ消息队列幂等性和顺序性-创新互联
文章源于:http://pwwzsj.com/article/cecepp.html