如何实现 Java Kafka 消费多并发

整体流程

下面是实现 Java Kafka 消费多并发的流程:

步骤 操作
1 创建 Kafka 消费者实例
2 设置消费者配置信息
3 订阅 Kafka 主题
4 启动多个消费者线程
5 在消费者线程中处理消息

详细步骤和示例代码

步骤一:创建 Kafka 消费者实例

首先,你需要创建 Kafka 消费者实例,代码如下:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);

步骤二:设置消费者配置信息

设置消费者的配置信息,包括 Kafka 集群地址、消费组 ID 等,代码如下:

consumer.subscribe(Collections.singletonList("test-topic"));

步骤三:订阅 Kafka 主题

订阅你要消费的 Kafka 主题,代码如下:

consumer.subscribe(Collections.singletonList("test-topic"));

步骤四:启动多个消费者线程

为了实现多并发消费,你需要启动多个消费者线程,代码示例如下:

int numThreads = 5;
ExecutorService executor = Executors.newFixedThreadPool(numThreads);
for (int i = 0; i < numThreads; i++) {
    executor.submit(() -> {
        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            for (ConsumerRecord<String, String> record : records) {
                System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
            }
        }
    });
}

步骤五:在消费者线程中处理消息

在消费者线程中处理 Kafka 消息,代码示例如步骤四所示。

类图

classDiagram
    class KafkaConsumer{
        Properties props
        KafkaConsumer<String, String> consumer
        +Properties getProps()
        +void setProps(Properties props)
        +void subscribe(String topic)
        +void startConsumers(int numThreads)
        +void handleMessage(ConsumerRecord<String, String> record)
    }

以上就是实现 Java Kafka 消费多并发的步骤和示例代码,希望可以帮助你快速上手并掌握这一技能。如果有任何疑问或者需要进一步的帮助,请随时向我提问。祝你成功!