美文网首页
SpringCloud-Stream-Kafka

SpringCloud-Stream-Kafka

作者: 千锋陈老师 | 来源:发表于2019-05-22 17:09 被阅读0次

SpringCloud Stream Kafka

基础知识

消息服务器作用:

一对多通知

并行转串行,削峰,削流

JMS - Java Message Service

Java定义的消息模型或者规范,有一套标准的Java API访问消息服务器,类似于jdbc访问数据库

消息服务器产品:

ActiveMQ/RabbitMQ/RocketMQ/Kafka

ActiveMQ/RabbitMQ/RocketMQ实现了JMS

Kafka没有实现JMS

SpringCloud Stream:SpringCloud的消息服务接口,可以使用它访问:

RabbitMQ/Kafka

Kafka需要Zookeeper作为数据存储。

安装Kafka

官网下载:http://kafka.apache.org/downloads

安装和使用:http://kafka.apache.org/quickstart

课程使用:kafka_2.12-2.2.0.zip

链接:https://pan.baidu.com/s/1Yy0BigcXRhFblVIrdtvRmw

提取码:q4o3

解压

启动Kafka

点击start.bat

会启动2个cmd窗口:

使用,请参考zip包中的windows安装指南.txt

创建主题

启动一个cmd窗口,切换目录到kafka解压目录:

执行命令:

bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic myTopic

执行如下命令查询新建的主题:

bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092

发送消息

输入命令:bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic myTopic

输入消息内容:abc

接收消息

另外启动一个新的cmd窗口,切换目录到kafka解压目录:

执行命令:

bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic myTopic --from-beginning

启动之后,可以看到上面生产者发送的abc消息。

生产者继续发送abcd消息,消费者可以立即收到。

SpringCloud-Stream消息模型

Source:发射器

Channel:频道

Binder:绑定器

Sink:接收器

消费者分组:

假设下图中服务A的3个实例为一个分组,服务B的2个实例为一个分组,则消息过来之后,只会有一个服务A的实例和服务B的实例处理该消息,其他实例不会收到消息。

使用默认频道进行消息发送和接收

创建项目

父项目springcloud-stream

\springcloud-stream\pom.xml

创建子项目

\springcloud-stream\springcloud-stream-producer

\springcloud-stream\springcloud-stream-consumer

配置:

/springcloud-stream-producer/pom.xml

/springcloud-stream-consumer/pom.xml

发送消息

创建消息发送者类

/springcloud-stream-producer/src/main/java/com/qfedu/demo/springcloud/stream/StreamProducer.java

配置频道及kafka

/springcloud-stream-producer/src/main/resources/application.yml

接收消息

创建消息接收者类

/springcloud-stream-consumer/src/main/java/com/qfedu/demo/springcloud/stream/StreamConsumer.java

配置频道及kafka

测试

参照第2节,启动kafka服务器

启动生产者

启动消费者

访问如下路径,发送消息qfedu2:

消息接收:

自定义频道发送和接收消息

消息生产者

自定义消息输出频道

/springcloud-stream-producer/src/main/java/com/qfedu/demo/springcloud/stream/QfOutputChannel.java

配置spring

映射输出频道到kafka主题

/springcloud-stream-producer/src/main/resources/application.yml

启动类

绑定发射器,并增加发送消息代码

/springcloud-stream-producer/src/main/java/com/qfedu/demo/springcloud/stream/StreamProducer.java

消息消费者

自定义消息输入频道

/springcloud-stream-consumer/src/main/java/com/qfedu/demo/springcloud/stream/QfInputChannel.java

配置spring

/springcloud-stream-consumer/src/main/resources/application.yml

启动类

/springcloud-stream-consumer/src/main/java/com/qfedu/demo/springcloud/stream/StreamConsumer.java

测试

相关文章

  • SpringCloud-Stream-Kafka

    SpringCloud Stream Kafka 基础知识 消息服务器作用: 一对多通知 并行转串行,削峰,削流 ...

  • 微服务-springcloud-stream-kafka

    stream的作用: 引入依赖 添加配置项 功能测试 生产者bean 消费者bean 消息测试 注意这些和kafk...

网友评论

      本文标题:SpringCloud-Stream-Kafka

      本文链接:https://www.haomeiwen.com/subject/arwuzqtx.html