是否有可能为已定义的PollableMessageSource保留基础的KafkaConsumer bean?
我将Binding定义为:
public interface TestBindings {
String TEST_SOURCE = "test";
@Input(TEST_SOURCE)
PollableMessageSource testTopic();
}
和配置类:
@EnableBinding(TestBindings.class)
public class TestBindingsPoller {
@Bean
public ApplicationRunner testPoller(PollableMessageSource testTopic) {
// Get kafka consumer for PollableMessageSource
KafkaConsumer kafkaConsumer = getConsumer(testTopic);
return args -> {
while (true) {
if (!testTopic.poll(...) {
Thread.sleep(500);
}
}
};
}
}
问题是,如何获得对应于testTopic的KafkaConsumer?有什么方法可以从在春季云流中连接的bean中获得它?
答案 0 :(得分:1)
KafkaMessageSource
将KafkaConsumer
填充到标题中,因此可以在接收消息的地方使用:https://github.com/spring-projects/spring-kafka/blob/master/spring-kafka/src/main/java/org/springframework/kafka/support/converter/MessageConverter.java#L57。
如果您要自己做poll
之类的事情,我建议您注入ConsumerFactory
并从那里使用一个消费者。