Springboot 整合 kafka(生产者--消费者)

1. pom 文件(主要引入了 spring-kafka 、lombok 、 gson 依赖。)

消费者和生产者导入的是一样的


		org.springframework.boot
		spring-boot-starter-parent
		1.5.9.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
        
            org.springframework.boot
            spring-boot-starter-web
        

		
			org.projectlombok
			lombok
			true
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		

        
            org.springframework.kafka
            spring-kafka
            1.1.1.RELEASE
        

        
            com.google.code.gson
            gson
            2.8.2
        

    

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

2. 配置文件 application.properties(生产者、消费者配置一样)

#============== kafka ===================
# 指定kafka 代理地址,可以多个
spring.kafka.bootstrap-servers=127.0.0.1:9092

#=============== provider  =======================

spring.kafka.producer.retries=0
# 每次批量发送消息的数量
spring.kafka.producer.batch-size=16384
spring.kafka.producer.buffer-memory=33554432

# 指定消息key和消息体的编解码方式
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

#=============== consumer  =======================
# 指定默认消费者group id
spring.kafka.consumer.group-id=test-consumer-group

spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=100

# 指定消息key和消息体的编解码方式
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

消息实体类 Message.java

也可以不定义实体类,直接定义要发送的消息

@Data
public class Message {
    private Long id;    //id

    private String msg; //消息

    private Date sendTime;  //时间戳

}

生产者 KafkaSender.java

@Component
@Slf4j
@Controller
public class KafkaSender {

    @Autowired
    private KafkaTemplate kafkaTemplate;

    private Gson gson = new GsonBuilder().create();

    //发送消息方法
    @RequestMapping("send")
    @ResponseBody
    public void send() {
        Message message = new Message();
        message.setId(System.currentTimeMillis());
        message.setMsg(UUID.randomUUID().toString());
        message.setSendTime(new Date());
        log.info("+++++++++++++++++++++  message = {}", gson.toJson(message));
        kafkaTemplate.send("zxf", gson.toJson(message));
        return "success";
    }
}

Springboot 整合 kafka(生产者--消费者)_第1张图片
Springboot 整合 kafka(生产者--消费者)_第2张图片

消费者类(新建一个新项目)

@Component
@Slf4j
public class KafkaReceiver {

    @KafkaListener(topics = {"zxf"})
    public void listen(ConsumerRecord record) {

        Optional kafkaMessage = Optional.ofNullable(record.value());

        if (kafkaMessage.isPresent()) {

            Object message = kafkaMessage.get();

            log.info("----------------- record =" + record);
            log.info("------------------ message =" + message);
        }

    }
}

Springboot 整合 kafka(生产者--消费者)_第3张图片

项目搭建好后,依次启动zookeeper kafka服务,再启动生产者开始发送消息,启动消费者接受消息

你可能感兴趣的:(技术,springboot)