pom 添加
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
生产者
@Component
@AllArgsConstructor
public class KafkaProducer {
private static final String MY_TOPIC = "MY_TOPIC";
KafkaTemplate kafkaTemplate;
public void produce(){
String msg = "发送到kafka的消息";
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(MY_TOPIC,msg);
future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
@Override
public void onFailure(Throwable throwable) {
System.out.println("发送消息失败:" + throwable.getMessage());
}
@Override
public void onSuccess(SendResult<String, Object> sendResult) {
System.out.println("发送结果:" + sendResult.toString());
}
});
}
}
新建消费者
@Component
public class KafkaConsumer {
@KafkaListener(groupId = "simple",topics = "MY_TOPIC")
public void consumer(ConsumerRecord<String,Object> record , @Header(KafkaHeaders.RECEIVED_TOPIC) String topic, Consumer consumer){
System.out.println("消费者收到消息:" + record.value() + "; topic:" + topic);
}
}
单元测试
private KafkaProducer _kafkaProducer;
@Test
public void testKafka(){
System.out.println("===============进入kafka测试方法===============");
_kafkaProducer.produce();
System.out.println("===============结束kafka测试方法===============");
}
输出
发送结果:SendResult [producerRecord=ProducerRecord(topic=MY_TOPIC, partition=null, headers=RecordHeaders(headers = [], isReadOnly = true), key=null, value=发送到kafka的消息, timestamp=null), recordMetadata=MY_TOPIC-0@0]
消费者收到消息:发送到kafka的消息; topic:MY_TOPIC