1、kafka如何用java代码实现发送同步消息和异步消息?2、kafka实现发送同步消息和异步消息在底层源码上有什么区别?都必须先发送到缓冲区才能再发到kafka集群的broker里面吗?
时间: 2024-03-19 17:45:13 浏览: 27
1. Kafka使用Java代码发送同步消息和异步消息的方式如下:
同步消息发送:
```java
ProducerRecord<String, String> record = new ProducerRecord<>("topic", "key", "value");
try {
RecordMetadata metadata = producer.send(record).get();
System.out.println("消息发送成功,偏移量为:" + metadata.offset());
} catch (Exception e) {
e.printStackTrace();
}
```
异步消息发送:
```java
ProducerRecord<String, String> record = new ProducerRecord<>("topic", "key", "value");
producer.send(record, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (exception == null) {
System.out.println("异步消息发送成功,偏移量为:" + metadata.offset());
} else {
exception.printStackTrace();
}
}
});
```
2. 在底层源码上,发送同步消息和异步消息的区别在于发送方法的返回值类型不同。同步消息发送方法`send()`会返回一个`RecordMetadata`,而异步消息发送方法`send()`则没有返回值。
无论是同步消息发送还是异步消息发送,都必须先发送到缓冲区中,然后再由Kafka的生产者将消息发送到Kafka集群的broker中。缓冲区的大小可以通过Kafka配置文件中的`batch.size`属性进行设置。通常情况下,缓冲区中的消息数量达到一定阈值或者一定时间间隔时,缓冲区中的消息才会被发送到Kafka集群中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)