• win10 本地通过docker提供kafka服务


    问题

    • 项目上一个新功能要用到Kafka, 按照类似功能把代码写完了,提交到dev环境调试(本地没有Kafka服务),死活监听不到消息(有发送消息的日志),也没有看到error日志

    • 对比了半天代码,也没有找到问题,于是决定通过docker提供本地Kafka服务

    安装步骤

    • 确保本地已安装docker, docker命令可识别
      在这里插入图片描述

    • 打开PowerShell(win10都有, 左下角直接搜)
      在这里插入图片描述

    • 安装zookeeper(跟Kafka配套的服务)

    docker pull wurstmeister/zookeeper

    docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

    • 安装Kafka

    docker pull wurstmeister/kafka

    docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka

    • 查检服务是否启动

    docker ps

    注:如果kafka docker 没有起来(再次docker ps发现消失),可以通过命令check 日志

    docker logs -f kafka

    删除docker服务,重来

    • 原因, kafka消息是会存起来,如果没有成功消费,应用启动后,会重现加载消费
    • 消费时,会反序列化,但我生产的消息反序列化失败,导致每次重新启动都会报错
    • 由于不知道如何清除kafka的数据,于是我直接重新安装服务,命令如下:

    docker rm -f zooper
    docker rm -f kafka
    docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
    docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka

    数据就干净了

    总结

    • 本地提供Kafka后,也终于发现了原因,是消息没有继承serializable接口,反序列化失败,本地看到了日志
    • kafka docker清除消息的命令要找一下,rm docker还是比较花时间的
    • 有一个国产软件Kafka Eagle, 查看消息的UI工具,也可以花时间再安装一下,方便查看消息的实时动态(之前一直没有跑起来)
  • 相关阅读:
    Oracle 安装包合集!
    Nacos的长轮询实践
    java知识回顾笔记(对象、反射、内省、实例、父类、构造方法、封装、泛型、super())
    地平线开发板配置网段
    第04章 经典卷积神经网络模型
    一句SQL构建斐波那契数列
    Python编程:高效数据处理与自动化任务实践
    BI智慧工程行业应用方案丨文末获取三重资源包
    Unix Network Programming Episode 59
    2022年企业数字化技术应用 5 大趋势丨三叠云
  • 原文地址:https://blog.csdn.net/lanxing_huangyao/article/details/126374825