如何向多个客户端机架发送Kafka信息?

k5hmc34c  于 2022-12-22  发布在  Apache
关注(0)|答案(1)|浏览(161)

我有一个Sping Boot 应用程序,它使用Kafka来生成和使用发往/来自其他应用程序的消息。
我实现了一个新的生产者,它的消息应该被发送到位于不同开发服务器的不同客户端。Kafka配置在项目的application.yml中指定。这是以前的配置:

spring:
  kafka:
    bootstrap-servers: server.a:port
    producer:
      properties:
        client.rack: server.a
    consumer:
      clientId: a-client-id
      groupId: a-group-id
      properties:
        client.rack: server.a
    jaas:
      options:
        username: an-username
        password: a-password

现在,使用新的生产者,我需要向第二个服务器server.b生产消息,因此:

spring:
  kafka:
    bootstrap-servers: 
      - server.a:port
      - server.b:port
    producer:
      properties:
        client.rack: 
          - server.a
          - server.b
    consumer:
      clientId: a-client-id
      groupId: a-group-id
      properties:
        client.rack: server.a
    jaas:
      options:
        username: an-username
        password: a-password

但是,这似乎只是将生成的消息发送到server.b
我不确定我的配置是否错误。据我所知,这似乎是正确的方式做它,但显然,我做错了什么,因为它不工作。有点迷失在这里。

dauxcl2d

dauxcl2d1#

这不是Kafka的工作方式,客户端总是发送到领导者代理,领导者可以存在于任何机架上,客户端无法控制他们首先将数据发送到领导者以外的位置,然后配置acks以允许复制到其他机架上的其他追随者。
此外,client.rack是字符串,而不是列表。

相关问题