SpringBoot集成kafaka

1、kafaka安装配置

1、Docker安装zookee

kafaka对于zk是强依赖(k3.0之后可以不用zk),保存kafaka相关节点数据

1、下载镜像
 
    docker pull zookeeper:3.4.14
 
    检查镜像是否拉取成功
    docker images | grep zookeeper

2、创建容器

    docker run -d -name zookeeper -p 2181:2181 zookeeper:3.4.14

2、Docker安装kafaka

1、下载镜像

    docker pull wurstmeister/kafaka:2.12-2.3.1

    检查kafka是否拉取成功
    docker images | grep kafka
    
2、创建容器
    docker run -d --name kafka \
    --env KAFKA_ADVERTISED_HOST_NAME=192.168.0.0 \  -----虚拟机地址
    --env KAFKA_Z00KEEPER_CONNECT=192.168.0.0:2181 \ -----连接zk
    --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.0:9092 \ ---对外监听
    --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
    --env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
    --net=host wurstmeister/kafaka:2.12-2.3.1 -----使用宿主机端口和ip(本机)
    -p 9092:9092 \  -----与--net=host 只写一个 (外部机)

2、集成SpringBoot

1、导入依赖

 <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.kafka</groupId>
                    <artifactId>kafka-clients</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>

2、创建配置文件

server:
  port: 9999
spring:
  application:
    name: kafka-demo
  kafka:
    bootstrap-servers: 192.168.0.0:9092
    producer:
      retries: 10   #重试次数
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: test-kafka-group
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer

      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

3、创建controller

@Autowired
    private KafkaTemplate<String,String> kafkaTemplate;
    
    @GetMapping("/KafkaDemo")
    public String KafkaDemo(){
       kafkaTemplate.send("topic-demo","发送的测试信息");
       return "ok"; 
    }

4、创建监听类

 @KafkaListener(topics = "topic-demo")
 public void onMessage(String msg){

        if(!StringUtils.isEmpty(msg)){
        	System.out.println(msg);
        }
    }

5、kafka传递的是对象

//如果kafka传递对象可以转换成json字符串发送,controller,和监听类修改如下:

    @Autowired
        private KafkaTemplate<String,String> kafkaTemplate;

        @GetMapping("/KafkaDemo")
        public String KafkaDemo(User user){
           kafkaTemplate.send("topic-demo",JSON.toJSONString(user));
           return "ok"; 
        }
        
     
     @KafkaListener(topics = "topic-demo")
     public void onMessage(String msg){

            if(!StringUtils.isEmpty(msg)){
            
          	  User user = JSON.porseObject(msg,User.class);
          	  
              System.out.println(user);
            }
        }   

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值