Spring Cloud Bus 消息总线集成Kafka

拟墨画扇 提交于 2019-12-06 21:41:44

Kafka并没有使用Eureka作为注册中心,必须使用 ZooKeeper ,好在Kafka安装包自带了 ZooKeeper ,只需下载Kafka就好了

Kafka 快速入门

环境安装

下载Kafka并解压后可以看到目录结构如下:

kafka
  +-bin
    +-windows
  +-config
  +-libs
  +-logs
  +-site-docs

因为 Kafka 是依赖 ZooKeeper 的,所以在 binconfig 目录下除了Kafka相关的内容还存在ZooKeeper 相关的内容。bin 目录存放了 Kafka 和 ZooKeeper 的命令行工具,其中根目录是适用于Linux/UNIX 的shell,bin/windows 下则存放的适用于 Windows 的bat。 config 目录则存放了 Kafka 和 ZooKeeper的配置信息。

启动测试

  • 启动 ZooKeeper,执行命令 zookeeper-server-start config/zookeeper.properties ,该命令需要指定 ZooKeeper 的配置文件位置才能正确启动,Kafka 的压缩包中包含了其默认配置,开发和测试环境无需修改。

  • 启动 Kafka,执行命令 kafka-server-start config/server.properties ,与 ZooKeeper 启动类似,但要指定其他环境的 ZooKeeper 的话可以修改 config/server.properties 的 zookeeper.connect 来设置连接 ZooKeeper 的地址和端口。

Spring Cloud 集成Kafka

pom.xml加入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>

加入以上依赖后,Spring Cloud 消息总线 Kafka 已经集成完成,使用的配置则是默认启动 Kafka 和 ZooKeeper 时的配置。确定 ZooKeeper 和 Kafka 已经启动,然后再启动有上面依赖的 Spring Boot 应用 ,这时 Kafka 会新增一个名为 springCloudBus 的 Topic,可以使用命令 kafka-topics --list --zookeeper localhost:2181 来查看当前 Kafka 中的 Topic。

集成后Kafka 配置

以上的例子中 Kafka、ZooKeeper 均运行于本地,但实际应用中,Kafka 和 ZooKeeper 一般会独立部署,所以需要为Kafka 和 ZooKeeper 配置一些连接信息,Spring Boot 1.3.7 没有为 Kafka 直接提供 Starter 模块,而是使用 Spring Cloud Stream 的 Kafka 模块,配置的时候则采用 spring.cloud.stream.kafka 前缀

spring.cloud.stream.kafka 配置

spring:
  cloud:
    stream:
      binders:
        #binderName
        kafka1:  
          type: kafka  
          environment:
               spring:
                 cloud:
                   stream:
                     kafka: 
                       binder: 
                         #kafka地址
                         brokers: localhost:9092
                         #zookeeper节点地址
                         zk-nodes: localhost:2181
       bindings:
         #channelName
         channelKafka:
           #binderName
           binder: kafka1
           destination: event-demo
           content-type: text/plain
           producer:
             partitionCount: 1

spring.kafka 配置

在启动Kafka的时候有这样一个配置 config/server.properties 的 zookeeper.connect 指定 ZooKeeper连接地址,但是在 spring.kafka 中并没有看到可以配置 ZooKeeper 连接地址 的地方

spring:
  kafka:
    consumer:
      #消费者服务器地址
      bootstrap-servers: localhost:9092
    producer:
      #生产者服务器地址
      bootstrap-servers: localhost:9092
  cloud:
    stream:
      bindings:
        channel1:
          destination: event-demo
          content-type: text/plain
          producer:
            partitionCount: 1
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!