仅当某些条件为真时才使用来自 Kafka 的消息

poi*_*dog 1 java apache-kafka spring-kafka

我们有特定的主题,只有在条件consumeEnabled=true 时才需要消费消息。所以,它应该像这样工作:

  1. 如果应用程序正在启动并且consumeEnabled=true,则将分区分配给消费者并使用来自主题的消息。
  2. 如果应用程序正在启动并且consumeEnabled=false,则不要将分区分配给消费者,也不要使用来自主题的消息。
  3. 如果应用程序已经以consumeEnabled=false 运行,但在运行时属性变为consumeEnabled=true,则在运行时将分区分配给消费者并使用来自主题的消息。

应用程序正在使用消息,但随后 consumerEnabled 变为 false 无需考虑的情况。

请用 Spring Kafka 和/或 Kafka Java 客户端定义实现决策的最佳方式

Gar*_*ell 5

如果你正在使用@KafkaListener那么

@KafkaListener(id = "foo", ... , autoStartup="${consume.enabled}")
Run Code Online (Sandbox Code Playgroud)

哪里consume.enabled是财产。

要在运行时启动/停止容器,请使用KafkaListenerEndpointRegistrybean。

registry.getListenerContainer("foo").start();
Run Code Online (Sandbox Code Playgroud)