序言

消息丢失如何解决?

解耦

异步

并行

Docker安装Kafak

1.下载镜像

# zookeeper镜像
docker pull wurstmeister/zookeeper
# kafka镜像
docker pull wurstmeister/kafka
# kafka管理镜像
docker pull sheepkiller/kafka-manager

2.运行容器

启动zookeeper

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

查看zookeeper启动日志

docker logs -f zookeeper 

安装kafka

docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=localhost \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.229.129:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.229.129:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" \
--net=host wurstmeister/kafka

查看kafka启动日志

docker logs -f kafka

验证:
进入kafka容器

docker exec -it kafka /bin/bash
# 进入kafka的bin目录
cd /opt/kafka_2.12-2.2.0/bin/

新建一个test主题,并以生产者身份进行消息生产

./kafka-topics.sh --create --zookeeper 192.168.229.129:2181 --replication-factor 1 --partitions 1 --topic test
./kafka-console-producer.sh --broker-list 192.168.229.129:9092 --topic test
>hello # 发送一条消息并回车
>world

打开一个新的ssh连接,同样进入kafka容器,模拟消费者接收消息

docker exec -it kafka /bin/bash
# 进入kafka的bin目录
cd /opt/kafka_2.12-2.2.0/bin/
# 以消费者身份接收消息
./kafka-console-consumer.sh --bootstrap-server 192.168.229.129:9092 --topic test --from-beginning
hello # 成功接收到消息
world

不断在生产者端发送消息,消费者端可以不断的接收到消息。kafka安装成功!

同样,在zookeeper可视化工具,刷新后可以看到kafka的相关数据节点:

安装kafkamanager

docker run -d --name kafka-manager -e ZK_HOSTS="192.168.229.129:2181" --net=host sheepkiller/kafka-manager
firewall-cmd --add-port=9000/tcp

http://192.168.229.1:9001

点对点模式

Kafka 是支持消费者群组的,也就是说 Kafka 中会有一个或者多个消费者,如果一个生产者生产的消息由一个消费者进行消费的话,那么这种模式就是点对点模式

发布订阅模式

如果一个生产者或者多个生产者产生的消息能够被多个消费者同时消费的情况,这样的消息队列成为发布订阅模式的消息队列

资料

http://www.tracefact.net/tech/058.html

http://kafka.apache.org/

https://www.cnblogs.com/cxuanBlog/p/11949238.html

https://www.jianshu.com/p/e642793cd5de

消息队列之--Kafak的更多相关文章

  1. 消息队列之 Kafka

    转 https://www.jianshu.com/p/2c4caed49343 消息队列之 Kafka 预流 2018.01.15 16:27* 字数 3533 阅读 1114评论 0喜欢 12 K ...

  2. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  3. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  4. .net 分布式架构之业务消息队列

    开源QQ群: .net 开源基础服务  238543768 开源地址: http://git.oschina.net/chejiangyi/Dyd.BusinessMQ ## 业务消息队列 ##业务消 ...

  5. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  6. Java消息队列--ActiveMq 实战

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  7. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  8. 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

    Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...

  9. Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇

    目前业界流行的分布式消息队列系统(或者可以叫做消息中间件)种类繁多,比如,基于Erlang的RabbitMQ.基于Java的ActiveMQ/Apache Kafka.基于C/C++的ZeroMQ等等 ...

随机推荐

  1. 【Qt开发】Qt控件之进度条

    QT 进度条操作实例是本文要介绍的内容,在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用   首先在designer中拖一个按钮和 ...

  2. Visual Subst - 简单将任意文件夹挂载模拟成驱动器盘符硬盘分区的小工具

    随着电脑的使用,硬盘里的资料一天比一天多,也越来越杂乱.一些朋友为了方便文件管理,会考虑重新分区,让C.D.E等盘符分别担任不同的角色.不过,不分区的话也有一些小工具可以帮你实现. Visual Su ...

  3. 20191128 Spring Boot官方文档学习(10)

    10.附录 附录A:通用应用程序属性 附录B:配置元数据 附录C:自动配置类 附录D:测试的自动配置注释 附录E:可执行的Jar格式 附录F:依赖版本

  4. k8s-kubernettes-sercet存储

    Secret Secret存在意义 Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中.Secret可以以Volume或者环境变量的方 ...

  5. excel常用公式--数据清洗类

    trim:去除单元格两端的空格. concat/&:连接单元格内的内容. mid:  提取字符串中间的字符串. left:  提取字符串左边的字符串. right: 提取字符串右边的字符串. ...

  6. Java类初始化和实例初始化过程

    1.类初始化过程 一个类要创建实例需要先加载并初始化该类 main方法所在的类需要先加载和初始化 一个子类要初始化需要先初始化父类 一个类初始化就是执行<client>()方法(编译器生成 ...

  7. REST风格,@PathVariable注解

    REST(Representational State Transfer,表述性状态转移)是一种软件风格.所谓的REST风格可以简单理解为:使用url表示资源时,每个资源都用一个独一无二的url来表示 ...

  8. Java四类八项基本数据类型

    一. 四类八项基本数据类型 1. 整数类型(byte.short.int.long) 三点注意事项: a. Java各整数类型有固定的表示范围和字段长度,其不收操作系统的影响,以保持Java的可移植性 ...

  9. Java 读取application.properties配置文件中配置

    实际开发中若需要读取配置文件application.properties中的配置,代码如下.例:读取配置文件中name属性配置值: 代码如下: import org.springframework.c ...

  10. ftp安装和虚拟用户创建(终于搞清楚了)

    安装 一.安装 sudo apt-get install vsftpd 二.查看安装结果 安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口 ps -eaf|grep vsftpd ...