Docker下kafka学习,三部曲之一:极速体验kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务。

我们一起用最快的速度体验kafka的消息发布订阅功能:

新建一个docker-compose.yml文件,内容如下:

version: '2'
services:
  zk_server: 
    image: daocloud.io/library/zookeeper:3.3.6
    restart: always
  kafka_server: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
    command: /bin/sh -c '/usr/local/work/start_server.sh'
    restart: always
  message_producer: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
      - kafka_server:kafkahost
    restart: always
  message_consumer: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
    restart: always

打开终端,在docker-compose.yml所在目录下执行docker-compose up -d,由于需要从hub.docker.com下载镜像,所以需要等待几分钟,下载结束后会自动启动四个容器,如下图:

为了更好的观察效果,我们要打开三个终端对不同的容器做操作,在后面我们用编号来表达不同的终端,编号对应如下:

1号 : kafka server 2号 : 消息生产者(producer) 3号 : 消息消费者(consumer)

1号终端中输入以下命令,即可看到kafka server的实时输出信息:

docker logs -f dockerkafka_kafka_server_1

输入命令后看到的信息如下图,与zookeeper连接成功,启动成功:

2号终端中输入以下命令,进入消息生产者容器:

docker exec -it dockerkafka_message_producer_1 /bin/bash

再执行以下命令创建一个主题:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-topics.sh --create --zookeeper zkhost:2181 --replication-factor 1 --partitions 1 --topic test001

3号终端中输入以下命令,进入消息消费者容器:

docker exec -it dockerkafka_message_consumer_1 /bin/bash

执行以下命令可以查看当前kafka sever上的所有主题:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-topics.sh --list --zookeeper zkhost:2181

可以看到刚才在2号终端创建的主题,如下图:

继续在3号终端上执行以下命令,即可订阅主题为test001的消息:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-console-consumer.sh --zookeeper zkhost:2181 --topic test001 --from-beginning

此时回到1号终端,可以看到消息订阅者容器的连接信息,如下图:

现在主题也创建了,订阅也添加了,可以测试消息的发送和接收了:

在2号终端,执行以下命令,就可以进入发送消息的交互模式:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-console-producer.sh --broker-list kafkahost:9092 --topic test001

此时已经进入了交互模式,继续输入一个字符串,例如hello world!,再输入回车键,即可发送内容为”hello world!”的消息,如下图:

现在回到3号终端,可以看到已经接收到了最新的消息,内容被打印出来了,如下图:

最后我们回到1号终端,能看到消息生产者的连接信息,如下图:

至此,我们快速体验了kafka的消息发布订阅功能,下一章我们再细说docker下kafka环境的搭建过程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

centos下部署redis服务环境的操作记录

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日...

187100
来自专栏雨过天晴

原 PHPStrom 9系列激活码

22640
来自专栏腾讯云Elasticsearch Service

Elasticsearch跨集群数据迁移之离线迁移

用户在腾讯云上自建的ES集群或者在其它云厂商购买的ES集群,如果要迁移至腾讯云ES,用户可以根据自己的业务需要选择适合自己的迁移方案。如果业务可以停服或者可以暂...

4.1K90
来自专栏林德熙的博客

SublimeText 粘贴图片保存到本地

在写 Markdown 时,比较难的是把图片粘贴保存到本地,或上传到服务器。 本文提供一个简单的方式可以把剪贴板的图片粘贴保存本地。

35820
来自专栏Samego开发资源

集群反向代理实现负载均衡『nginx & apache2』

21530
来自专栏小樱的经验随笔

Linux目录结构

Linux 目录结构 装完Linux,首先需要弄清Linux 标准目录结构 ? / root —?启动Linux时使用的一些核心文件。如操作系统内核、引导程序G...

49360
来自专栏AhDung

【手记】解决VS发布asp.net项目报错“该项目中不存在目标GatherAllFilesToPublish”及后续问题

用VS2017打开一个以前用VS2010写的asp.net项目后,设置好发布选项(发布到文件夹),发布的时候报错如图:

1K20
来自专栏开源优测

基于jenkins和jmeter实现接口自动化过程

前面几篇文章中,我们已经了解了jenkins的安装与相关功能配置,那么,今天我们将介绍下如何结合jmeter实现接口自动化的过程。 一、准备工作 1、首先要准备...

37650
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Git Hooks部署Rails应用程序

在本教程中,我们将向您展示如何使用Git hooks自动将Rails应用程序的生产环境部署到远程Ubuntu 14.04服务器。使用Git hooks将允许您通...

18660
来自专栏Java后端技术栈

使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境)、Nginx 1.9.8、Redis 3.2.1

11720

扫码关注云+社区

领取腾讯云代金券