在很多时候我们需要使用到消息队列, 其中 kafka 是一个非常优秀的消息队列, 在我们平时开发中也经常会用到, 但是在开发环境中部署 kafka 是一个非常麻烦的事情

在 kafka 官网上, 有一个详细的部署文档, 需要的小伙伴可以参考这个文档 https://kafka.apache.org/quickstart, 但是随之带来的问题是, 我们需要 java 环境, 并且需要安装 zookerper,

那么如果我仅仅是想本地开发环境中使用 kafka, 有没有更简单的方法呢? 为了解决这个问题, 我们可以使用 docker 来部署 kafka

使用 docker 来部署 kafka 的测试节点, 我们需要先安装 docker 和 docker-compose, 这里就不再赘述了, 请自行安装

首先我们在已经安装好 docker 和 docker-compose 的机器上, 创建一个目录, 并且在这个目录下创建一个 docker-compose.yml 文件, 文件内容如下

version: "2"

services:
kafka:
image: docker.io/bitnami/kafka:3.6
ports:
- '9094:9094'
volumes:
- "kafka_data:/bitnami"
environment:
# KRaft settings
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
# Listeners
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
volumes:
kafka_data:
driver: local

然后我们就可以在这个目录下执行 docker-compose up -d 来启动 kafka 了, 启动完成后, 我们可以使用 docker ps 命令来查看 kafka 是否启动成功

➜  ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f346c045196d bitnami/kafka:3.6 "/opt/bitnami/script…" 2 days ago Up 2 days 0.0.0.0:9092-9094->9092-9094/tcp, :::9092-9094->9092-9094/tcp

此时需要注意打开防火墙限制, 例如我的防火墙使用的是 ufw , 我们需要执行以下命令

ufw allow 9094

然后我们就可以使用 kafka 了, 例如我现在使用 python 来连接 kafka, 首先我们需要安装 kafka-python

import time

from kafka import KafkaConsumer

consumer = KafkaConsumer('test',
group_id='test',
bootstrap_servers=['x.x.x.x:9094'])
for message in consumer:
print(time.time(), "%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
message.offset, message.key,
message.value))
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['x.x.x.x:9094'])

# Asynchronous by default
future = producer.send('test', b'raw_bytes')
producer.flush()

欢迎访问我的个人博客 https://blog.twotigers.xyz/posts/kafka/

使用 docker 部署 kafka的更多相关文章

  1. [转]【kafka】用 Docker 部署 Kafka

    ref : https://www.jianshu.com/p/7635ea96e53f 用 Docker 部署 Kafka   Kafka 简介 作为一个消息中间件,Kafka 以高扩展性.高吞吐量 ...

  2. 转 docker 部署 kafka

    原文链接 http://blog.csdn.net/snowcity1231/article/details/54946857 -e KAFKA_BROKER_ID=1 -e ZK=zk -p 909 ...

  3. Docker部署kafka|Go操作实践

    前言 写作本文的背景是由于字节的暑期青训营中,某个项目要求编写一个简易的流处理引擎(flink),开发语言不限,推荐Java,本着好奇心的驱使,我打算使用Go语言进行部分尝试. 既然是流处理引擎,那么 ...

  4. docker部署kafka集群

    利用docker可以很方便的在一台机子上搭建kafka集群并进行测试.为了简化配置流程,采用docker-compose进行进行搭建. kafka搭建过程如下: 编写docker-compose.ym ...

  5. Docker部署Kafka以及Spring Kafka操作

    从https://hub.docker.com/ 查找kafka 第三个活跃并stars数量多 进去看看使用 我们使用docker-compose来构建镜像 查看使用文档中的docker-compos ...

  6. 【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon

    通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署: 1 docker部署zookeeper # usermod -G docker zookeeper ...

  7. 基于Docker的Kafka部署

    一 准备 1.1 安装docker-dompose #部署 sudo curl -L "https://github.com/docker/compose/releases/download ...

  8. 生产环境Docker部署ELK跨区访问kafka不通问题的解决

    由于分布式系统的日志集中采集的需求非常强烈,我们组通过调研和实践搭建了一套基于Docker的日志收集系统Amethyst. 我们首先在测试环境搭建了一套基于Docker swarm集群的ELK分布式环 ...

  9. Docker部署zookeeper集群和kafka集群,实现互联

    本文介绍在单机上通过docker部署zookeeper集群和kafka集群的可操作方案. 0.准备工作 创建zk目录,在该目录下创建生成zookeeper集群和kafka集群的yml文件,以及用于在该 ...

  10. 基于Kubernetes在AWS上部署Kafka时遇到的一些问题

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 交代一下背景:我们的后台系统是一套使用Kafka消息队列的数据处理管线 ...

随机推荐

  1. AliAGC 自动增益控制算法:解决复杂场景下的音量问题

    音视频会议,直播连麦以及短视频已经成为人们工作.教学以及娱乐的一部分,其背后都离不开音视频实时通信等关键技术的广泛应用.音频方面,可预见的是客户业务形式的多样性,环境的复杂性,以及接入设备的差异性会带 ...

  2. 【Git使用】代码拉取及用户名初始化

    代码拉取及用户名初始化

  3. KMP 复习笔记

    KMP 学习(复习)笔记 KMP(Knuth-Morris-Pratt)是算法竞赛中常用的字符串匹配算法之一,它可以有效地利用失配信息来使得匹配全过程中不回溯,从而在线性时间内完成匹配. 本文已有前置 ...

  4. PostMan——安装使用教程(图文详解)

    https://blog.csdn.net/m0_61843874/article/details/123324727 postman使用教程1-安装与使用: https://www.cnblogs. ...

  5. rem布局,使用手机端,pc大屏——亲测好用

    1 var docEl = document.documentElement, 2 //当设备的方向变化(设备横向持或纵向持)此事件被触发.绑定此事件时, 3 //注意现在当浏览器不支持orienta ...

  6. 机器学习-线性分类-支持向量机SVM-合页损失-SVM输出概率值-16

    目录 1. SVM概率化输出 2. 合页损失 1. SVM概率化输出 标准的SVM进行预测 输出的结果是: 是无法输出0-1之间的 正样本 发生的概率值 sigmoid-fitting 方法: 将标准 ...

  7. 线性代数 · 矩阵 · Matlab | 满秩分解代码实现

    背景 - 矩阵的满秩分解: 若 A 为 m×n 矩阵,rank(A) = r,则存在 F m×r.G r×n,使得 A = FG. 其中,F 列满秩,G 行满秩. 求满秩分解的方法: 得到 A 的行最 ...

  8. docker 安装 nacos

    转载请注明出处: https://www.jianshu.com/p/54f6da71ac48

  9. 【Git】常用 Git 命令清单

    [来源]https://blog.csdn.net/hj7jay/article/details/53431717

  10. 【MicroPython】 mp对象和 c 类型的转换

    [来源]https://www.eemaker.com/micropython-mp-toc.html