Is there a way to get hold on the ListenerContainer object used by @KafkaListener? I want to dynamically subscribe to new topics using the container if possible. Or there is another better way to subscribe new topics at runtime? Thanks. -aj
Asked
Active
Viewed 1,019 times
1 Answers
0
If you use '@EnableKafka', then KafkaListenerEndpointRegistry is automatically registered as Bean ( code : https://git.io/JfQDQ )
So you can get a list of listener as below.
@Service
public class KafkaListenerHandler {
private final KafkaListenerEndpointRegistry registry;
public KafkaListenerHandler(KafkaListenerEndpointRegistry registry) {
this.registry = registry;
}
public List<MessageListenerContainer> getListener() {
return new ArrayList<>(registry.getListenerContainers());
}
}
However, you cannot change the topic during Runtime...
See this link : https://stackoverflow.com/a/54467119/2462408

bistros
- 1,139
- 1
- 9
- 23
-
thanks, @bistro. Any other way to update the topic list in existing listener container? – aj2 Jun 14 '20 at 15:48
-
I don't know such a way. Kafka Consumer does not originally have that function. In other ways, create a new listener, or declare the topic name regular pattern – bistros Jun 14 '20 at 16:00