0

目前我有一个 Quarkus 应用程序,它从一个 Kafka 主题消费并在另一个 Kafka 主题上产生。它使用 SmallRye 反应式消息传递。它运作良好。由于外部变化,要生成的主题和要使用的主题将位于不同集群上的 Kafka 服务器上(不应/不能组合在一个集群中)。

在应用程序配置(yaml)中,我们设置了 Kafka 服务器(代理):

kafka:
  bootstrap:
    servers: localhost:9092

在此处添加服务器无济于事,然后它会尝试将数据传播到代理上,这不是我的意图。

是否可以连接到多个集群(可能为每个主题设置一个服务器)?在互联网上找不到任何关于Quarkus 文档SmallRye 文档的内容

4

2 回答 2

4

这不是很清楚,但它在kafka 入站文档的示例文档中进行了解释,据说您可以全局配置您的代理(使用kafka.<props>)或每个通道。

您可以将所有受支持的 Kafka 属性传递给每个通道:

mp.messaging.incoming.chanel1.bootstrap.servers=kafka1:9092
mp.messaging.incoming.chanel2.bootstrap.servers=kafka2:9092
于 2021-06-03T08:43:59.420 回答
0

从属性文件中删除以下属性

kafka.bootstrap.servers

接下来添加以下属性。我们在这里所做的不是为应用程序中的所有通道全局设置引导服务器,而是为单个通道设置。

mp.messaging.incoming.channel1_name.bootstrap.servers=kafka1:9092 mp.messaging.incoming.channel2_name.bootstrap.servers=kafka1:9092

一旦您在 application.properties 中设置了上述属性并运行,它将显示 docker 容器无法启动......类似的东西和警告消息,如 No config value of type [java.lang.String] exists for: kafka.bootstrap .服务器。

这是由于开发服务处于活动状态。为了消除这种情况,我们需要再添加一个属性。

quarkus.devservices.enabled = false

现在运行应用程序,它应该可以解决问题。

于 2021-12-10T12:05:24.630 回答