如果kafka消费者作为主项目的依赖项而成为war的一部分,那么它会消费生产者生成的事件吗?

问题描述 投票:0回答:1

我正在运行一个项目,其中包含主题 A 的 Kafka 生产者。 对于同一个项目,我有一场依赖战争,其中包含 Kafka 消费者对此主题 A 的依赖。

第一个问题 生产者生成的事件会被战争中的消费者听到吗?

第二个问题 如果这是战争依赖的一部分,我怎样才能让消费者不听这个事件? 如果它作为独立部署那么它应该消耗该事件。

java apache-kafka kafka-consumer-api
1个回答
0
投票

第一个问题:生产者生成的事件会被战争中的消费者听到吗? 是的,如果 WAR 内的消费者配置为监听主题 A,并且生产者和消费者都正确配置为与同一个 Kafka 代理交互,则消费者将能够消费生产者为该主题生成的消息。

第二个问题:如果这是战争依赖的一部分,如何让消费者不收听该事件?如果它作为独立部署那么它应该消耗该事件。 您可以根据消费者的部署方式,通过配置和代码逻辑来控制消费者的行为。这里有一些方法:

基于配置的控制:您可以使用配置文件或环境变量来确定使用者是否应该处于活动状态。当部署为 WAR 时,设置配置以禁用使用者。独立部署时,设置配置以启用消费者。

基于上下文的激活:如果您使用的框架支持基于上下文的激活(例如 Spring),您可以根据运行时上下文有条件地启用或禁用消费者 bean。

编程控制:在应用程序代码中,您可以包含逻辑来检查应用程序是在独立模式下运行还是作为 WAR 部署的一部分运行。您可以使用属性、环境变量或其他方式来确定模式,然后相应地启动或停止 Kafka 消费者。

这是使用基于配置的方法的示例:

在您的配置文件中,添加一个属性来控制消费者是否应该处于活动状态:

json

{“enableConsumer”:假}

在您的应用程序代码中,阅读此配置:

java

boolean enableConsumer = ... // 从配置中读取

根据enableConsumer的值,决定是否启动Kafka消费者。

java

if (enableConsumer) { // 启动 Kafka 消费者 }

作为 WAR 部署时,设置配置以禁用使用者。独立部署时,设置配置以启用消费者。

通过采用其中一种方法,您可以根据部署方法控制消费者的行为,并确保其仅在以独立模式部署时消费消息。

© www.soinside.com 2019 - 2024. All rights reserved.