Kafka
- 分布式发布-订阅类型的MQ
- 高吞吐量
- 消息无序,同一个 partition中消息有序
- 版本号 kafka_2.11-0.10.1.1.tgz: 2.11为scala版本号,0.10.1.1 为kafka版本
准备好JVM
概念
- Broker : Kafka服务器,一个服务器被称为一个Broker
- Topic : 每一类消息可以定义一个Topic
- Partition : 每个Topic都有1个或者多个partition,属于物理上的分隔
- offset : 偏移量每个partition中的消息唯一标识
- Producer : 消息发布者
- Consumer : 消息订阅者
- Consumer Group : 属于订阅者独有的概念,默认为统一的group
更多参考 官网
CentOS下安装Kafka
安装Zookeeper
使用外部zookeeper,不使用kafka自带的zookeeper,使用wget 命令进行下载
- 使用wget命令下载
- 使用tar 进行解压
- 使用默认port: 2181
- 1
- 1
- 1
- 1
配置 zoo.cfg
- 1
- 2
- 1
- 2
配置 dataDir、dataLogDir
- 1
- 2
- 1
- 2
启动zk
- 1
- 1
安装Kafka
- 使用wget命令下载
- 使用tar 进行解压
- 使用默认port: 9092
修改位于config下的 server.properties
- 使用默认端口号:9092
对外网开启服务: advertised.host.name = xxx.xx.xxx.xx (服务器外网地址)
- xxx.xx.xxx.xx (服务器外网地址),我这里服务器在远端所以需要配置
log.dirs: log.dirs=/tmp/kafka-logs
- partitions:num.partitions=1
- zookeeper
- zookeeper.connect=localhost:2181 (zk和kafka我放在了同一台服务器上)
- zookeeper.connection.timeout.ms=6000
启动kafka
- 1
- 2
- 1
- 2
测试
- 创建Topic
- 启动producer
- 启用consumer
创建Topic
- 1
- 1
查看创建的 Topic
- 1
- 1
启动producer
- 1
- 1
启用consumer
- 1
- 1
发送消息
producer
consumer
可能的错误
当kafka服务与项目在不同服务器上时,可能会出现连接错误,这个时候需要绑定kafka的host
- host.name=xx.xx.xxxx.xx
- hostname 为内网地址
代码
代码请移步 Github参考地址
如有疑问请加公众号(K171),如果觉得对您有帮助请 github start