(干净利落?)在Spring Apache Kafka中使用消息

时间:2018-02-07 11:02:02

标签: java spring apache-kafka kafka-consumer-api

我已经整理了一个示例应用程序来测试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作为我的参考点(在引用该指南时,前面已经链接过)。

*编辑:如果有人知道吗?  你能直接从制片人那里传递价值吗?但肯定它甚至不会进入卡夫卡呢?

0 个答案:

没有答案