9.3.1 在 Spring 中设置 Kafka

要开始使用 Kafka 进行消息传递,需要将适当的依赖项添加到构建中。但是,与 JMS 和 RabbitMQ 不同,Kafka 没有 Spring Boot starter。不过还是只需要一个依赖:

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

这个依赖项将 Kafka 所需的一切都带到项目中。更重要的是,它的存在将触发 Kafka 的 Spring Boot 自动配置,它将在 Spring 应用程序上下文中生成一个 KafkaTemplate。您所需要做的就是注入 KafkaTemplate 并开始发送和接收消息。

然而,在开始发送和接收消息之前,应该了解一些在使用 Kafka 时会派上用场的属性。具体来说就是,KafkaTemplate 默认在 localhost 上运行 Kafka broker,并监听 9092 端口。在开发应用程序时,在本地启动 Kafka broker 是可以的,但是在进入生产环境时,需要配置不同的主机和端口。

注意:安装 Kafka 群集。

如果要运行本章中的示例,您需要一个可用的 Kafka 集群。请参阅 Kafka 官方文档 https://kafka.apache.org/quickstart,这是一个开始学习如何在您的计算机上本地运行 Kafka 的好地方。

spring.kafka.bootstrap-servers 属性设置一个或多个 Kafka 服务器的位置,用于建立到 Kafka 集群的初始连接。例如,如果集群中的 Kafka 服务器之一运行在 Kafka .tacocloud.com 上,并监听 9092 端口,那么可以在 YAML 中像这样配置它的位置:

spring:
  kafka:
    bootstrap-servers:
    - kafka.tacocloud.com:9092

但是注意 spring.kafka.bootstrap-servers 属性是复数形式,它接受一个列表。因此,可以在集群中为它提供多个 Kafka 服务器:

spring:
  kafka:
    bootstrap-servers:
    - kafka.tacocloud.com:9092
    - kafka.tacocloud.com:9093
    - kafka.tacocloud.com:9094

这些配置适用于名为 Kafka.tacocloud.com 的主机上的 Kafka 引导服务器。如果如果您在本地运行 Kafka 集群(可能在开发过程中),那么您需要要改用 localhost,请执行以下操作:

spring:
  kafka:
    bootstrap-servers:
    - localhost:9092

在项目中设置了 Kafka 之后,就可以发送和接收消息了。首先来看看 KafkaTemplate 将 Order 对象发送给 Kafka。

results matching ""

    No results matching ""