2.5.1 开发Java版本的客户端程序
生产者程序。
其中,
• 第12行代码,表示服务器端在接收到消息后,生产者需要进行反馈确认的尺度,其主要用于消息的可靠性传输。
➢ acks=0表示生产者不需要来自服务器端的确认。
➢ acks=1表示服务器端将消息保存后即可发送ack,不需要等到其他follower角色都收到该消息。
➢ acks=all(或acks=-1)意味着服务器端将等待所有副本都被接收后才发送确认。
• 第14行代码,表示生产者发送失败后重试的次数。
• 第15行代码,表示当多条消息发送到同一个partition时,该值控制生产者批量发送消息的大小。批量发送可以减少生产者到服务器端的请求数,有助于提高客户端和服务器端的性能。
• 第16行代码,表示在默认情况下缓冲区的消息会被立即发送到服务器端,即使缓冲区的空间并没有用完。可以将linger.ms设置为大于0的值,这样发送者在等待一段时间后,再向服务器端发送请求,以实现每次请求可以尽可能多发送批量消息。
• 第17行代码,表示生产者缓冲区的大小,保存的是还未来得及发送到服务器端的消息,如果生产者的发送速度大于消息被提交到服务器端的速度,该缓冲区将被耗尽。
• 第19~22行代码,说明了使用何种序列化方式将用户提供的key和value值序列化成字节。
消费者程序。
其中,
• 第13行代码,表示Kafka使用消费者分组的概念来允许多个消费者共同消费和处理同一个Topic中的消息。分组中的消费者成员是动态维护的,如果一个消费者处理失败了,那么之前分配给它的partition将被重新分配给分组中的其他消费者;同样,如果分组中加入了新的消费者,也将触发整个partition重新分配,每个消费者将尽可能地分配到相同数目的partition,以达到新的均衡状态。
• 第14行代码,表示用于配置消费者是否自动提交消费的进度。
• 第15行代码,表示用于配置自动提交消费进度的时间。
• 第16~19行代码,说明了使用何种序列化方式将用户提供的key和value值序列化成字节。