引言
在前面的两篇博客《微服务技术系列教程(34) - SpringCloud-使用RabbitMQ实现消息驱动》、《微服务技术系列教程(35) - SpringCloud-消息驱动消费者组的实现》,实现了基于默认的RabbitMQ来实现消息驱动,同时实现了消费者轮询分发的功能。
现在有个问题?如果现在不想使用RabbitMQ了,想切换至Kakfa,那么该如何实现呢?
其实切换相当简单,基于《微服务技术系列教程(34) - SpringCloud-使用RabbitMQ实现消息驱动》的环境,本文来讲解。
代码实现
其实只需要添加Maven依赖和修改生产者与消费者的application.yml配置文件,就可以实现RabbitMQ与Kafka的平滑切换了。
1.在前面博客的基础上,添加maven依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-kafka</artifactId> <version>2.0.1.RELEASE</version> </dependency>
2.生产者添加配置:
server: port: 9001 spring: cloud: stream: # 设置成使用kafka kafka: binder: # Kafka的服务端列表,默认localhost brokers: 192.168.162.131:9092,192.168.162.132:9092,192.168.162.133:9092 # Kafka服务端连接的ZooKeeper节点列表,默认localhost zkNodes: 192.168.162.131:2181,192.168.162.131:2181,192.168.162.131:2181 minPartitionCount: 1 autoCreateTopics: true autoAddPartitions: true
3.消费者添加配置:
server: port: 9002 spring: application: name: spingcloud-stream-consumer cloud: instance-count: 1 instance-index: 0 stream: kafka: binder: brokers: 192.168.162.131:9092,192.168.162.132:9092,192.168.162.133:9092 # Kafka服务端连接的ZooKeeper节点列表,默认localhost zkNodes: 192.168.162.131:2181,192.168.162.131:2181,192.168.162.131:2181 auto-add-partitions: true auto-create-topics: true min-partition-count: 1 bindings: input: destination: my_msg group: s1 consumer: autoCommitOffset: false concurrency: 1 partitioned: false
4.启动Zookeeper+Kafka集群
5.生产者生产消息,浏览器输入:http://localhost:9001/sendMsg,可以看到消费者能消费到消息:
附:如果不知道Kafka集群如何搭建,可以参考我之前写的文章
- 《消息中间件系列教程(21) -Kafka- 集群搭建(自带Zookeeper)》(推荐)
- 《消息中间件系列教程(20) -Kafka-集群搭建》(不推荐,搭建比较耗时)