我正在使用带有 spring-kafka (不是 spring-integration-kafka )的Spring Boot 2.x
我有多个带有@KafkaListener
注释的bean ...每个都消耗一个主题...因此,由于我有12个主题,因此我还需要有12个KafkaConsumers bean ...而且我想知道如果我可以通过编程方式/动态地创建这些bean,...可以使用 KafkaListenerEndpointRegistry 来动态创建使用者容器。
注意:我需要成批使用邮件...所以也许我可以使用 BatchMessageListener ?
当前代码:
@KafkaListener(
id = COUNTRY,
containerFactory = KAFKA_LISTENER_FACTORY_BEAN_NAME,
topics = {TOPIC},
groupId = GROUP_ID,
clientIdPrefix = CLIENT_ID,
errorHandler = VALIDATION_ERROR_HANDLER_BEAN_NAME
)
@Override
public void consume(final List<MessageDTO> messages,
@Header(KafkaHeaders.RECEIVED_TOPIC) final List<String> topics,
@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) final List<String> messagesKey,
@Header(KafkaHeaders.RECEIVED_PARTITION_ID) final List<Integer> partitionIds,
@Header(KafkaHeaders.RECEIVED_TIMESTAMP) final List<Long> timestamps,
@Header(KafkaHeaders.OFFSET) final List<Long> offsets) {
(...)
}
每个主题使用者都有自己的实现,具体取决于主题。你们能给我指出一个博客/伪代码/ git线程/答案吗?
答案 0 :(得分:1)
创建您的对象,并将其注册为通过上述方法中的供应商提供的Bean。 Spring将运行设置一切所需的bean后处理器。
答案 1 :(得分:0)
如果您的主题有某种模式,您也可以尝试以下一种模式:
kafka:
bindings:
input.consumer.destination-is-pattern: true