
Kafka
生产者——向
Kafka
写入数据
|
35
➊
生产者的
send() 方法将ProducerRecord 对象作为参数,所以我们要先创建一个
ProducerRecord 对象。ProducerRecord 有多个构造函数,稍后我们会详细讨论。这里使
用其中一个构造函数,它需要目标主题的名字和要发送的键和值对象,它们都是字符
串。键和值对象的类型必须与序列化器和生产者对象相匹配。
➋
我们使用生产者的 send() 方法发送 ProducerRecord 对象。从生产者的架构图里可以看
到,消息先是被放进缓冲区,然后使用单独的线程发送到服务器端。send() 方法会返
回一个包含 RecordMetadata 的 Future 对象,不过因为我们会忽略返回值,所以无法知
道消息是否发送成功。如果不关心发送结果,那么可以使用这种发送方式。比如,记录
Twitter
消息日志,或记录不太重要的应用程序日志。
➌
我们可以忽略发送消息时可能发生的错误或在服务器端可能发生的错误,但在发送消
息之前,生产者还是有可能发生其他的异常。这些异常有可能是
SerializationException
(说明序列化消息失败)、
BufferExhaustedException
或
TimeoutException
(说明缓冲区已
满),又或者是
InterruptException
(说明发送线程被中断)。
3.3.1
同步发送消息
最简单的同步发送消息方式如下所示。
ProducerRecord<String, String> record ...