我已经整理了一个示例应用程序来测试Spring Apache Kafka。我成功消费通过KafkaTemplate发送消息,甚至能够使用ConsumerRecord输出从模板发送的消息,所以我知道消费者正在接收数据但我试图找出一件事。
如何在创建consumerRecord bean时不必在其中添加额外的值来使用消息?
我想知道我是否遗漏了一些我根本不需要创建这个bean的东西,但是在guide我用过的我不知道ConsumerRecord在哪里是listen
方法中使用的方法甚至根本使用的方法?
在我的配置类中,我创建了一个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);
}
我使用此方法将发送到主题的所有值打印到记录器:
private static final String topicName = "my-topic";
@KafkaListener(topics = topicName)
private void listen(ConsumerRecord consumerRecord){
logger.info("Consumer Record Value:::: " + consumerRecord.value());
latch.countDown();
}
我担心的是,我不知道发生了什么&#34;价值&#34;我把消费者记录bean放在最后。在现实世界的应用程序中,我不希望消耗一些随机虚拟值,所以我如何避免这种情况,只关注通过KafkaTemplate
发送的数据?
我在整理应用程序时使用了Spring Docs作为我的参考点(在引用该指南时,前面已经链接过)。
*编辑:如果有人知道吗? 你能直接从制片人那里传递价值吗?但肯定它甚至不会进入卡夫卡呢?