延吉网站开发公司有哪些,公司国产卡一卡二乱码新区,个人网站备案核验单,广州番禺区天气预报无消息丢失最佳实践配置#xff1a;
不要使用 producer.send(msg)#xff0c;而要使用 producer.send(msg, callback) API。设置 acks all。是 Producer 参数。设置成 all#xff0c;表明所有副本 Broker 都要接收到消息#xff0c;g该消息才算是“已提交”。设置 retrie…无消息丢失最佳实践配置
不要使用 producer.send(msg)而要使用 producer.send(msg, callback) API。设置 acks all。是 Producer 参数。设置成 all表明所有副本 Broker 都要接收到消息g该消息才算是“已提交”。设置 retries 为一个较大的值。是 Producer 的参数表示Producer自动重试。当出现网络的瞬时抖动时消息发送可能会失败此时配置了 retries 0 的Producer能够自动重试消息发送避免消息丢失。设置 unclean.leader.election.enable false。这是 Broker 端的参数它控制的是哪些 Broker 有资格竞选分区的 Leader。如果一个 Broker 落后原先的 Leader 太多那么它一旦成为新的 Leader必然会造成消息的丢失。故一般都要将该参数设置成 false即不允许这种情况的发生。设置 replication.factor 3。Broker 端的参数。分区副本数量目前防止消息丢失的主要机制就是冗余。设置 min.insync.replicas 1。Broker 端参数表示消息至少要被写入到多少个副本才算是“已提交”。设置成大于 1 可以提升消息持久性。在实际环境中不要使用默认值 1。确保 replication.factor min.insync.replicas。如果两者相等那么只要有一个副本挂机整个分区就无法正常工作。不仅要改善消息的持久性防止数据丢失还要能保证可用性。推荐设置 replication.factor min.insync.replicas 1。确保消息消费完成再提交。Consumer 端有个参数 enable.auto.commit最好把它设置成 false并采用手动提交位移的方式。就像前面说的这对于单 Consumer 多线程处理的场景而言是至关重要的。