springboot整合kafka

springboot整合kafka

pom.xml producer和consumer共用
// An highlighted block
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

PRODUCER

application.yml

// An highlighted block
spring:
  application:
    name: demo2
    #springboot maven项目ESBboss配置文件
  elasticsearch:
    bboss:
      elasticsearch:
        rest:
          hostNames: 127.0.0.1:9200
  kafka:
    bootstrap-servers: 127.0.0.1:9092 #指定kafka server的地址,集群配多个,中间,逗号隔开
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: default_consumer_group #群组ID
      enable-auto-commit: true
      auto-commit-interval: 1000
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

SEND类

// An highlighted block
@RestController
public class KafkaController {
    @Autowired
    private KafkaTemplate<String,Object> kafkaTemplate;

    @RequestMapping("message/send")
    public String send(String msg){
        kafkaTemplate.send("list", msg); //使用kafka模板发送信息
        return "success";
    }

}

CONSUMER

// An highlighted block
var foo = 'bar';
@Component
public class ConsumerDemo {
    /**
     * 定义此消费者接收topics = "demo"的消息,与controller中的topic对应上即可
     * @param record 变量代表消息本身,可以通过ConsumerRecord类型的record变量来打印接收的消息的各种信息
     */
    @KafkaListener(topics = "list")
    public void listen (ConsumerRecord<?, ?> record){
        System.out.printf("topic is %s, offset is %d, value is %s \n", record.topic(), record.offset(), record.value());
    }
}

tipocs 可以随意写,但一定要对应。

你可能感兴趣的:(kafka,zookeeper)