当并发度大于 1 时暂停整个容器

Pausing entire container when concurrency is greater than 1

当我们正在使用并发大于1的容器,想暂停所有的子容器,是否可以直接暂停:

MessageListenerContainer mlc= registry.getListenerContainer(<id>);
mlc.pause();

或者我们是否必须将其转换为并发消息侦听器容器并分别暂停每个容器?

提前致谢。

如果您将 @KafkaListener(id = "your-id",...) 用于您的方法,它将被注册为 ConcurrentMessageListenerContainer 的实例。所以当你调用mlc.pause()时,它实际上是ConcurrentMessageListenerContainer#pause,你不必强制转换它(多态性)。

ConcurrentMessageListenerContainer#pause,它将委托给它里面的所有KafkaMessageListenerContainer#pause(例如:并发=3,你将有3个KafkaMessageListenerContainer的实例)。 您不必单独暂停每个容器, mlc.pause() 就足够了。