【六】阿伟开始搭建Kafka学习环境

阿伟开始搭建Kafka学习环境

【六】阿伟开始搭建Kafka学习环境_第1张图片

概述

        上一篇文章阿伟学习了Kafka的核心概念,并且把市面上流行的消息中间件特性进行了梳理和对比,方便大家在学习过程中进行对比学习,最后梳理了一些Kafka使用中经常遇到的Kafka难题以及解决思路,经过上一篇的学习我相信大家对Kafka有了初步的认识,本篇将继续学习Kafka。

一、安装和配置

        学习一项技术首先要搭建一套服务,而Kafka的运行主要需要部署jdk、zookeeper、Kafka,Kafka是通过zookeeper来进行集群、broker、主题、分区等内容管理的。通过安装包的方式过于繁琐这里推荐使用docker容器的方式快速运行一套Kafka服务。

        首先我们拉取zookeeper镜像并构建和运行容器:

docker pull zookeeper

docker run -itd --name zookeeper -p 2181:2181 zookeeper:latest

        然后我们拉取Kafka镜像并构建和运行容器:

docker pull bitnami/kafka

docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.90.39:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 bitnami/kafka:latest

        这样我们很快就运行了一套Kafka服务了,通常学习一项服务我们都想要一套可视化平台方便管理服务,这里我推荐一块可视化工具,部署方式如下:

docker pull nickzurich/efak:latest

docker run -d --name kafka-eagle -p 8048:8048 -e EFAK_CLUSTER_ZK_LIST="192.168.90.39:2181" nickzurich/efak:latest

访问地址 ip:8048,默认账号和密码Account:admin ,Password:123456,登录界面如下:

【六】阿伟开始搭建Kafka学习环境_第2张图片

二、准备学习Kafka的demo工程

        这里选择springboot集成Kafka的方式来搭建学习demo工程,搭建了一个消费者和一个生产者工程,方便后续学习Kafka的一些特性:

我们需要引入如下依赖:


    org.springframework.kafka
    spring-kafka

生产者工程实现如下:

配置文件

spring:
  kafka:
    producer:
      bootstrap-servers: 192.168.90.39:9092
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer

发送消息的关键代码如下:

@Autowired
private KafkaTemplate kafkaTemplate;

public String sendMessage(String message) {
    logger.info(String.format("#### -> Producing message -> %s", message));
    this.kafkaTemplate.send(TOPIC, message);
    return message;
}

消费者工程实现如下:

配置文件

spring:
  kafka:
    consumer:
      bootstrap-servers: 192.168.90.39:9092
      group-id: group_id
      auto-offset-reset: earliest
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

消费消息的关键代码如下:

@Service
public class Consumer {

    @KafkaListener(topics = "users", groupId = "group_id")
    public void consume(String message) throws IOException {
        log.info(String.format("#### -> Consumed message -> %s", message));
    }
}

通过上面的基础案例用户在学习的过程中可以继续扩展,从而学习Kafka其他的特性。

总结

        本文内容比较基础主要给大家提供了一个Kafka学习环境搭建的教程。

你可能感兴趣的:(中间件,学习,kafka,spring)