Spring Cloud Bus 消息总线集成Kafka

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值