【kafka 入门小知识、及spring整合】

kafka 入门小知识

1、基本知识

  • 是一个分布式的流媒体平台,由消息队列扩展到更多功能
  • 应用:消息队列(发布订阅模式)、采集大批量日志、分析用户行为、流式处理。
  • 特点:高吞吐量(对硬盘顺序读取效率高于对内存的随机读取)、消息持久化(将消息存到硬盘中)、可靠性高(分布式保证容错能力)、扩展性高
  • 术语:
    • broker服务器、Zookeeper(独立的应用管理集群,kafka内置)
    • topic主题(文件夹,存放发布的消息位置)、partition分区(多线程同时写数据;提高并发能力、服务器处理能力)、offset(消息在partition中的索引)
    • replica副本(每个分区都有多个副本,提高容错率)–>leader replica主副本(响应请求);Follwer replica从副本(只存数据)主副本挂了之后选举从副本

2、安装配置

  • -config配置zookeeper.properties数据存放处

    • dataDir=D:/IDEA/software/data/zookeeper
  • -config配置server.properties,日志文件存放位置

    • log.dirs=D:/IDEA/software/data/kafka-logs
  • 运行:

    • kafka根目录cmd

    • 启动zookeeper命令

    •  bin\windows\zookeeper-server-start.bat config\zookper.properties
      
    • 启动kafka命令

    •  bin\windows\kafka-server-start.bat config\server.properties
      
    • 使用kafka的命令工具,

    • cd: bin\windows
      //创建主题,指定服务器节点、副本、分区、主题名字
      kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
         //查看localhost:9092的主题
      kafka--topic.bat --list --bootstrap-server localhost:9092
         //发布消息到localhost:9092的test主题
      kafka-console-producer.bat --broker-list localhost:9092 --topic test
         //从localhost:9092消费消息test主题,从头到尾的读
      kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
      

3、spring整合kafka

  1. 引入依赖

    • <dependency>
      		<groupId>org.springframework.kafka</groupId>
      		<artifactId>spring-kafka</artifactId>
      </dependency>
      
  2. 配置kafka

    • #kafkaProperties
      #主机
      spring.kafka.bootstrap-servers=localhost:9092
      #消费者组id
      spring.kafka.consumer.group-id=community-consumer-group
      #自动提交偏移量
      spring.kafka.consumer.enable-auto-commit=true
      #自动提交频率
      spring.kafka.consumer.auto-commit-interval=3000
      
  3. 访问kafka

    • 生产者

      • 注解spring容器中的kafkaTemplate,使用其send方法发布消息----主动调用发布消息的方法

      • @component
        class KafkaProducer {
           @Autowired
           private KafkaTemplate kafkatemplate;
           public void sendMessage(String topic, String content) {
              kafkaTemplate.send(topic, content);
           }
        }
        
    • 消费者

      • 注解spring容器中的kafkaListener监听kafka中的消息----被动监听,方法被动调用

      • spring监听到消息后会封装成ConsumerRecord供修饰的方法操作

      • @component
        class KafkaConsumer {
           @KafkaListener(topic = {"test"})
           public void handleMessage(ConsumerRecord record) {
              System.out.println(record.value);
           }
        }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值