Kafka进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 生产者的消息发送模式

Kafka生产者的消息发送主要有三种模式:发后即忘(fire-and-forget)、同步模式(sync)及异步模式(async)。

发后即忘:只管向Kafka中发送消息而并不用关心消息是否正确到达。在大多数情况下,这种发送方式没有什么问题,不过在某些时候(比如发生不可重试异常时)会造成消息的丢失。这种发送方式的性能最高,可靠性也最差。EmployeeProducer就是采用的这种模式。

同步模式:要实现同步的发送方式,可以利用返回的Future对象的阻塞等待Kafka的响应即可实现,直到消息发送成功。如果发生异常,就需要捕获异常并交由外层逻辑处理。改造一下之前的EmployeeProducer代码,使用同步模式将消息发送到Kafka服务器端。

异步模式:为了在异步发送消息的同时能够对异常情况进行处理,生产者提供了回调支持。一般在send()方法中指定一个Callback的回调函数,Kafka在返回响应时调用该函数来实现异步的发送确认。改造一下之前的EmployeeProducer生产者代码,使用异步模式将消息发送到Kafka服务器端。