如何禁用 Spring Cloud Stream Kafka 消费者
How to disable a Spring Cloud Stream Kafka consumer
这是我的情况:
我们有一个 Spring 云 Stream 3 Kafka 服务连接到同一代理中的 多个主题 ,但我想根据属性控制到特定主题的连接。
每个主题都有自己的绑定器和绑定,但代理对所有人都是一样的。
我尝试使用下面的 属性 禁用绑定(这是我迄今为止找到的唯一解决方案),这适用于 StreamListener 不接收消息,但与主题的连接和重新平衡仍然存在正在发生。
spring:
cloud:
stream:
bindings:
...
anotherBinding:
consumer:
...
autostartup: false
我想知道活页夹级别是否有任何设置阻止它启动。其中一个主题消费者应该只在一种环境中可用。
谢谢
通过将 autoStartup
设置为 false
来禁用绑定应该可行,我不确定问题出在哪里。
看起来您使用的不是新功能模型,而是 StreamListener
。如果您使用的是功能模型,那么您可以尝试另一件事。您可以通过在 运行 时不包括相应的功能来禁用绑定。例如,假设您有以下两个消费者。
@Bean
public Consumer<String> one() {}
@Bean
public Consumer<String> two() {}
当运行安装此应用程序时,您可以提供属性 spring.cloud.function.definition
到include/exclude 功能。例如,当你 运行 它与 spring.cloud.function.definition=one
时,消费者 two
根本不会被激活。当运行spring.cloud.function.definition=two
时,则消费者one
不会被激活。
上述方法的缺点是,如果您决定在应用程序启动后启动其他功能(假设 autoStartup
是 false
在其他功能上),它将无法正常工作通过 spring.cloud.function.definition
不是原始绑定的一部分。但是,根据您的要求,这可能不是问题,因为您知道相应主题针对哪些环境。换句话说,如果您知道消费者 one
需要始终从主题 one
消费,那么您就不会将消费者 two
作为定义的一部分。
这是我的情况:
我们有一个 Spring 云 Stream 3 Kafka 服务连接到同一代理中的 多个主题 ,但我想根据属性控制到特定主题的连接。
每个主题都有自己的绑定器和绑定,但代理对所有人都是一样的。
我尝试使用下面的 属性 禁用绑定(这是我迄今为止找到的唯一解决方案),这适用于 StreamListener 不接收消息,但与主题的连接和重新平衡仍然存在正在发生。
spring:
cloud:
stream:
bindings:
...
anotherBinding:
consumer:
...
autostartup: false
我想知道活页夹级别是否有任何设置阻止它启动。其中一个主题消费者应该只在一种环境中可用。
谢谢
通过将 autoStartup
设置为 false
来禁用绑定应该可行,我不确定问题出在哪里。
看起来您使用的不是新功能模型,而是 StreamListener
。如果您使用的是功能模型,那么您可以尝试另一件事。您可以通过在 运行 时不包括相应的功能来禁用绑定。例如,假设您有以下两个消费者。
@Bean
public Consumer<String> one() {}
@Bean
public Consumer<String> two() {}
当运行安装此应用程序时,您可以提供属性 spring.cloud.function.definition
到include/exclude 功能。例如,当你 运行 它与 spring.cloud.function.definition=one
时,消费者 two
根本不会被激活。当运行spring.cloud.function.definition=two
时,则消费者one
不会被激活。
上述方法的缺点是,如果您决定在应用程序启动后启动其他功能(假设 autoStartup
是 false
在其他功能上),它将无法正常工作通过 spring.cloud.function.definition
不是原始绑定的一部分。但是,根据您的要求,这可能不是问题,因为您知道相应主题针对哪些环境。换句话说,如果您知道消费者 one
需要始终从主题 one
消费,那么您就不会将消费者 two
作为定义的一部分。