【博学谷学习记录】超强总结,用心分享 | Kafka

文章介绍了Kafka作为一个分布式流媒体平台的基本概念,与其他消息中间件如ActiveMQ、RabbitMQ和RocketMQ的对比,并提供了Kafka的Docker安装配置步骤。同时,展示了如何创建Kafka的生产者和消费者进行消息发送与接收。
摘要由CSDN通过智能技术生成


一、Kafka是什么?

Kafka 是一个分布式流媒体平台,类似于消息队列或企业消息传递系统。
Kafka官网

二、消息中间件对比

特性ActiveMQRabbitMQRocketMQKafka
开发语言javaerlangjavascala
单机吞吐量万级万级10万级100万级
时效性msusmsms以内
可用性高(主从)高(主从)非常高(分布式)非常高(分布式)
功能特性成熟的产品、较安全的文档、各种协议支持好并发能力强、性能好、延迟低MQ功能比较完善,扩张性佳只支持主要的MQ功能,主要用于大数据领域

2.消息中间件对比-选择建议

消息中间件建议
kafka追求高吞吐量,适合产生大量数据的互联网服务的数据收集业务
RocketMQ可靠性要求很高的金融互联网领域,稳定性高,经历多次阿里双十一考验
RabbitMQ性能较好,社区活跃度高,数据量没那么大,优先悬着功能比较完善的RabbitMQ

三、kafka安装和配置

kafka对于zookeeper是强依赖,保存kafka相关的节点数据,所以安装kafka之前必须包装zookeeper

  • Docker安装zookeeper
    • 下载镜像
    docker pull zookeeper:3.4.14
    
    • 创建容器
    docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14
    
  • Docker安装kafka
    • 下载镜像
    docker pull wurstmeister/kafka:2.12-2.3.1
    
    • 创建容器
    docker run -d --name kafka \
    --env KAFKA_ADVERTISED_HOST_NAME=192.168.200.130 \
    --env KAFKA_ZOOKEEPER_CONNECT=192.168.200.130:2181 \
    --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.200.130:9092 \
    --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    --env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
    --net=host wurstmeister/kafka:2.12-2.3.1
    

四、kafka入门

  • 生产者发送消息
    1. 导入kafka客户端依赖
    <dependency>
    	<groupId>org.apache.kafka</groupId>
    	<artifactId>kafka-clients</artifactId>
    </dependency>
    
    1. 编写消息生产者类ProducerQuickstart
      1. 设置kafka的配置信息

        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.200.130:9092");
        //消息key的序列化器
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");
        //消息value的序列化器
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");
        
      2. 创建生产者对象

        KafkaProducer<String,String> producer = new KafkaProducer<String, String>(properties);
        
      3. 发送消息

        ProducerRecord<String,String> record = new ProducerRecord<String,String>(“topic","key",“value");
        producer.send(record);
        
      4. 关闭消息通道

        producer.close();
        
  • 消费者接收消息
    1. 编写消息生产者类ProducerQuickstart
      1. 设置kafka的配置信息
        //连接信息
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"192.168.200.130:9092");
        //指定消费者组
        properties.put(ConsumerConfig.GROUP_ID_CONFIG,"group2");
        //反序列化的key和value
        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringDeserializer");
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringDeserializer");
        
      2. 创建消费者对象
        KafkaConsumer<String,String> consumer = new KafkaConsumer<String,String>(properties);
        
      3. 订阅主题
        consumer.subscribe(Collections.singletonList("itcast-001"));
        
      4. 获取消息
        ConsumerRecords<String, String> consumerRecords = consumer.poll(Duration.ofMillis(1000));
        

总结

以上就是今天要讲的内容,本文仅仅简单介绍了kafka的使用,而kafka提供了还有更多的功能待你发现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值