我已经整理了一个示例应用程序来测试Spring Apache Kafka . 我正在成功消费通过KafkaTemplate发送消息,甚至能够使用ConsumerRecord输出从模板发送的消息,所以我知道消费者正在接收数据,但我想弄明白一件事 .
How can I consume the messages without having to throw some extra value in there when creating my consumerRecord bean?
我错过了一些我根本不需要创建这个bean的东西,但是在这个guide中我使用了我不明白在 listen
方法中使用ConsumerRecord的地方以及该方法甚至被使用的地方?
在我的配置类中,我创建了一个consumerRecord bean:
@Bean
public ConsumerRecord<String,String> consumerRecord(){
return new ConsumerRecord<>("my-topic", 1, 1L, "key", "value");
}
除了我指定为my-topic的主题之外,基本上是虚拟属性 .
我正在通过模板发送消息,如下所示:
void sendMsg(){
ProducerRecord<String,String> producerRecord = new ProducerRecord<>("my-topic", "Sample Data");
try {
latch.await(1000L, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
template.send(producerRecord);
listen(consumerRecord);
}
我用这种方法将发送到主题的所有值打印到 Logger :
private static final String topicName = "my-topic";
@KafkaListener(topics = topicName)
private void listen(ConsumerRecord consumerRecord){
logger.info("Consumer Record Value:::: " + consumerRecord.value());
latch.countDown();
}
我担心的是,我不会发生"value"我放在消费者记录bean的末尾 . 在现实世界的应用程序中,我不希望消耗一些随机虚拟值,所以我如何避免这种情况,只关注通过 KafkaTemplate
发送的数据?
在将应用程序放在一起时,我使用Spring Docs作为我的参考点(在引用该指南时前面已经链接过) .
*编辑:如果有人知道?你能直接从制片人那里传递 Value 吗?但肯定它甚至不会进入 Kafka 呢?