springboot2 整合 kafka 2.3

979 阅读1分钟

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