引言
在前面的两篇博客《微服务技术系列教程(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集群如何搭建,可以参考我之前写的文章