我有一个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
。
我不确定我的配置是否错误。据我所知,这似乎是正确的方式做它,但显然,我做错了什么,因为它不工作。有点迷失在这里。
1条答案
按热度按时间dauxcl2d1#
这不是Kafka的工作方式,客户端总是发送到领导者代理,领导者可以存在于任何机架上,客户端无法控制他们首先将数据发送到领导者以外的位置,然后配置
acks
以允许复制到其他机架上的其他追随者。此外,
client.rack
是字符串,而不是列表。