当我们使用并发性大于1的容器,并且希望暂停所有子容器时,我们可以直接使用以下方法暂停:
MessageListenerContainer mlc= registry.getListenerContainer(<id>);
mlc.pause();还是必须将其转换为并发消息侦听器容器并单独暂停每个容器?
提前谢谢。
发布于 2022-02-13 15:47:31
如果您将@KafkaListener(id = "your-id",...)用于您的方法,它将被注册为ConcurrentMessageListenerContainer的一个实例。因此,当您调用mlc.pause()时,它实际上是ConcurrentMessageListenerContainer#pause,不需要转换它(多态性)。
使用ConcurrentMessageListenerContainer#pause,它将委托给它内的所有KafkaMessageListenerContainer#pause(例如: concurrency = 3,您将有3个KafkaMessageListenerContainer实例)。--您不必单独暂停每个容器, mlc.pause()就足够了。
https://stackoverflow.com/questions/71093673
复制相似问题