springboot整合kafka應用

一、kafka在消息傳遞的使用很是廣泛,相對於activemq來講kafka的分佈式管理和使用更加靈活。html

二、activemq的搭建和使用能夠參考:web

  activemq搭建和springmvc的整合:http://www.cnblogs.com/ll409546297/p/6898155.htmlspring

  springboot和springboot的整合:http://www.cnblogs.com/ll409546297/p/7805072.htmlapache

三、kafka的搭建:bootstrap

  http://www.cnblogs.com/ll409546297/p/7810302.htmlspringboot

四、下面介紹kafka和springboot的整合mvc

  1)目錄結構app

  

  2)須要的基礎包:pom.xmlmaven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.troy</groupId>
    <artifactId>springbootkafka</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>1.3.0.RELEASE</version>
        </dependency>
    </dependencies>

</project>

  3)基本配置:application.yml分佈式

server:
  port: 8090
spring:
  kafka:
    bootstrap-servers: 192.168.5.10:9092 #kafka的訪問地址,多個用","隔開
    consumer:
      enable-auto-commit: true
      group-id: kafka #羣組ID
      auto-offset-reset: earliest #啓東時接收沒有接收到的數據

  若是存在集羣的話,配置以下

server:
  port: 8090
spring:
  kafka:
    consumer:
      enable-auto-commit: true
      group-id: kafka
      auto-offset-reset: earliest
      bootstrap-servers: 192.168.5.11:9092
    producer:
      bootstrap-servers: 192.168.5.10:9092

   4)生產者:KafkaProducer.class

@Component //這個必須加入容器否則,不會執行
@EnableScheduling //這裏是爲了測試加入定時調度
public class KafkaProducer {

    @Autowired
    private KafkaTemplate kafkaTemplate;

    @Scheduled(cron = "00/30 * * * * ?")
    public void send(){
        System.out.println("send data");
        kafkaTemplate.send("topic","kafka data");
        //發送方式不少種能夠本身研究一下
    }
}

  5)消費者:KafkaCustomer.class

@Component //一樣這裏是必須的
public class KafkaCustomer {

    @KafkaListener(topics = {"topic"})
    public void receive(String message){
        System.out.println("topic========topic");
        System.out.println(message);
    }
}

  6)測試結果:

相關文章
相關標籤/搜索