【问题标题】:Kafka partitioning in SpringBootSpring Boot 中的 Kafka 分区
【发布时间】:2020-01-25 13:27:48
【问题描述】:

我是卡夫卡的新手。我需要通过 Spring Boot 为 Kafka 编写一个简单的生产者和消费者。实际上我正在从 micronaut 迁移到 Spring Boot。我对主题的分区有疑问。在 micronaut 中,我使用@KafkaKey 作为分区键,如下所示:

public void process(@KafkaKey MyKey kafkaKey, @Body MyRecord myRecord) 

说到春天,我不知道该怎么做,因为我看到 KafkaTemplete 类有一个 Integer 对象的分区参数。

public ListenableFuture<SendResult<K, V>> send(String topic, Integer partition, K key, @Nullable V data) 

那么如何在 Spring Boot 中执行第一行呢?

【问题讨论】:

    标签: apache-kafka spring-kafka micronaut


    【解决方案1】:

    KafkaTemplate 有不同的发送消息的方法。例如:

    1. 使用提供的键和无分区将数据发送到提供的主题

    send(java.lang.String topic, K key, V data)

    1. 将数据发送到提供的没有键或分区的主题。

    end(java.lang.String topic, V data)

    您可以在这里选择最合适的方式: https://docs.spring.io/spring-kafka/api/org/springframework/kafka/core/KafkaTemplate.html

    【讨论】:

    • 非常感谢,我想我对分区和键的概念感到困惑。
    • 同样如何在 KafkaListener 中获取这个关键参数?
    • 类似@KafkaListener(id = "qux", topicPattern = "myTopic1") public void listen(@Payload String foo, @Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) Integer key, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { ... }
    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2023-02-04
    • 1970-01-01
    • 2017-10-28
    • 2020-07-25
    • 2020-07-21
    • 2020-11-13
    • 2019-11-03
    相关资源
    最近更新 更多