本文共516字
简介
“消息队列”是在消息的传输过程中保存消息的容器。
应用场景
- 解耦 我的服务通过api调用其他服务,忽然其他的服务不需要了,我还要把不需要的服务去掉。或者某天有人让我加上一个服务地址,不止开发麻烦,还影响性能,所以要把这个服务的api做成一个消息发出去,有人要获取消息就自己连我的消息队列就可以。
- 削峰 当服务有大流量进来时候,容易把Redis,MySQL打挂掉。所以需要把流量做成向管道一样,每次过得水都一样多,这样服务消费能力一般情况都不会挂掉。
- 异步 如果是个订单服务,下个单还要等待支付,支付之后还要等待积分计算一系列的操作, 那链路长导致的访问过慢,但是我们发现上面的流程其实可以同时做,你支付成功后,同时积分计算也可以。那就开始下单就进入消息队列,支付和积分同时执行消费,提高效率。
概念
- 生产者 发送消息的组件
- 消费者 消费消息的组件
- 队列 消息存放的组件,像是现实生活中的容器
kafka
组件
- Topic :主题;消息根据Topic进行归类
- partition: 分区
- producer:生产者
- consumer:消费者
- broker:每个kafka实例(server)
- offset:消息偏移量
快速安装
kafka可以通过官网下载:https://kafka.apache.org/downloads
找到安装包:kafka_2.11-2.2.2.tgz。
解压后,进入bin目录执行命令./kafka-server-start.sh ../config/server.properties 启动服务
测试一下
-
创建toppic
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic wqy -
kafka生产者客户端命令
./kafka-console-producer.sh --broker-list localhost:9092 --topic wqy -
kafka消费者客户端命令
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic wqy -
删除topic:
./kafka-topics.sh --zookeeper localhost:2181 --delete --topic wqy