代码结构
配置文件:
#spring.kafka.bootstrap-servers=vm208:9092,vm:9092,vm50:9092
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.group-id=local_test
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.acks=1
简单实现
生产者:
@Component
public class KafkaProducer {
@Autowired
private KafkaTemplate kafkaTemplate;
private Logger logger = LoggerFactory.getLogger(this.getClass());
String topic = "test1";
public void sendMessage(String key,String data){
logger.info("sendMessage") ;
kafkaTemplate.send(new ProducerRecord(topic,key,data));
}
消费者:
@Component
public class KafkaConsumer {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@KafkaListener(topics = {"test1"})
public void listen(ConsumerRecord<?, ?> record) {
logger.info("topic = : " +record.topic());
logger.info("offset = : " +record.offset());
logger.info("key = : " +record.key());
logger.info("value = : " +record.value());
}
}
测试用controller:
@RestController
public class ProducerController {
@Autowired
private KafkaProducer kafkaProducer;
@GetMapping(value = "/test")
@ResponseBody
public String test(){
return "success";
}
@GetMapping(value = "/sendMessage")
@ResponseBody
public String clientSendMessage(@RequestParam(value = "key") String key,@RequestParam(value = "data")String data){
kafkaProducer.sendMessage(key,data);
return "success";
}
自己备份留用。