导入依赖
<!-- 继承Spring boot工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- kafkfa -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
</dependencies>
springBoot配置文件
spring:
kafka:
bootstrap-servers: 192.168.200.130:9092
producer:
retries: 1
batch-size: 16368
buffer-memory: 33554432
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
group-id: test-hello-group
auto-offset-reset: earliest
enable-auto-commit: true
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
listener:
concurrency: 5
生产者
@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
@GetMapping("/kafka")
public void send() {
//简单发送
kafkaTemplate.send("topic1","你好");
//带回调的发送
// kafkaTemplate.send("topic1", "你好").addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
// @Override
// public void onFailure(Throwable throwable) {
// System.out.println(throwable.getStackTrace());
// }
//
// @Override
// public void onSuccess(SendResult<String, String> stringStringSendResult) {
// System.out.println(stringStringSendResult.getProducerRecord());
// System.out.println(stringStringSendResult.getRecordMetadata());
// }
// });
//事务
// kafkaTemplate.executeInTransaction(new KafkaOperations.OperationsCallback<String, String, String>() {
// @Override
// public String doInOperations(KafkaOperations<String, String> kafkaOperations) {
// ListenableFuture<SendResult<String, String>> send = kafkaOperations.send("topic1", "你好");
throw new RuntimeException("fail");
// return "aa";
// }
// });
}
消费者
@Component
public class receive {
//partitions 分区
@KafkaListener(topics = {"topic1"})
public void Receive(ConsumerRecord<?,?> record){
System.out.println(record.toString());
System.out.println("消费者1:"+record.value());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@KafkaListener(topics = {"topic1"})
public void Receive1(ConsumerRecord<?,?> record){
System.out.println(record.toString());
System.out.println("消费者2:"+record.value());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}