请问向kafak发送消息是同步生产者和异步生产者有什么不同?

来源:7-14 服务隔离下解决数据同步--商品变更事件发送kafka 消息

404_

2023-02-10

老师,您好!
GetKafkaSyncProducer()调用的是 sarama.SyncProducer
GetKafkaAsyncProducer()调用的是 sarama.AsyncProducer
请问 同步和异步的方式有什么不同吗?各有什么优势?如果使用异步方法应该注意些什么?

写回答

1回答

少林码僧

2023-02-10

使用异步发送最快,但取法立即获得发送结果,可以在异步回调中拿到消息的发送结果,在消息顺序严格要求的场景没法补发消息。但这种发送方式是异步并发发送,不会阻塞,所以发送效率非常高。

需要注意的是一般不涉及到金钱交易类的项目,对消息有序性和可靠性没有绝对追求的场景可以使用异步的方式。异步的方式在性能上相比同步差距非常大,如果并发处理的数据量比较大应该首先考虑异步的方式。我们可以通过其他手段来发现异常去确保数据的最终一致性。

同步方式最可靠可以重试,最大程度保障网络异常消息丢失等情况,可以通过异常自己做本地处理,可以确保消息不丢失,但在性能上会很低。可以根据生产的场景选择同步发送或者异步加回调的方式。


1
0

海量数据高并发场景,构建Go+ES8企业级搜索微服务

全新 ES8 配合技术组件,实现高性能搜索

267 学习 · 54 问题

查看课程