赞
踩
1.acks 参数设置为 all,强制要求写入所有 ISR 中的副本成功后才认为是成功
2.retries 参数设置为 Integer.MAX_VALUE,在出现一条消息发送失败之后,就一直重试直到成功为止。
1.关闭自动提交,即设置 enable.auto.commit 为 false,同时使用同步提交及在代码中使用
commitOffsetsSync 函数按照 offset 的维度进行消息提交。
1.设置 log.flush.interval.messages 参数为 1,也就是每写入一条消息就强制刷盘。默认情况下 kafka 是不控制刷盘的,交给 OS 去控制。
2.设置 Topic 的副本数至少大于等于 2,通常情况下是默认为 3。
1.基于 DB 的唯一键,我们可以通过消息的内容拼成一个唯一的 key。然后创建一个幂等表,其中可以就两列 <id, key>,其中设置 key 列为唯一键。每次进行消息的业务处理前,进行幂等判断,也就是朝表中插入一个
key,如果报了对应的违反唯一性的异常,那么就跳过该消息的处理。
2.基于缓存,实现原理跟用 DB 基本一致,不过可以修改为判断 key 是否存在于缓存中,如果存在则跳过否则存入后再进行业务处理。
1.1个Topic(主题)只创建1个Partition(分区),这样生产者的所有数据都发送到了一个Partition(分区),保证了消息的消费顺序。
2.发送消息保证同步发送,不能异步发送。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。