此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.9spring-doc.cadn.net.cn

消息侦听器

使用消息侦听器容器时,必须提供侦听器来接收数据。 目前有八个支持消息侦听器的接口。 以下列表显示了这些接口:spring-doc.cadn.net.cn

public interface MessageListener<K, V> { (1)

    void onMessage(ConsumerRecord<K, V> data);

}

public interface AcknowledgingMessageListener<K, V> { (2)

    void onMessage(ConsumerRecord<K, V> data, Acknowledgment acknowledgment);

}

public interface ConsumerAwareMessageListener<K, V> extends MessageListener<K, V> { (3)

    void onMessage(ConsumerRecord<K, V> data, Consumer<?, ?> consumer);

}

public interface AcknowledgingConsumerAwareMessageListener<K, V> extends MessageListener<K, V> { (4)

    void onMessage(ConsumerRecord<K, V> data, Acknowledgment acknowledgment, Consumer<?, ?> consumer);

}

public interface BatchMessageListener<K, V> { (5)

    void onMessage(List<ConsumerRecord<K, V>> data);

}

public interface BatchAcknowledgingMessageListener<K, V> { (6)

    void onMessage(List<ConsumerRecord<K, V>> data, Acknowledgment acknowledgment);

}

public interface BatchConsumerAwareMessageListener<K, V> extends BatchMessageListener<K, V> { (7)

    void onMessage(List<ConsumerRecord<K, V>> data, Consumer<?, ?> consumer);

}

public interface BatchAcknowledgingConsumerAwareMessageListener<K, V> extends BatchMessageListener<K, V> { (8)

    void onMessage(List<ConsumerRecord<K, V>> data, Acknowledgment acknowledgment, Consumer<?, ?> consumer);

}
1 使用此接口处理单个ConsumerRecord从 Kafka 消费者收到的实例poll()使用自动提交或容器管理的提交方法之一时的作。
2 使用此接口处理单个ConsumerRecord从 Kafka 消费者收到的实例poll()使用手动提交方法之一时的作。
3 使用此接口处理单个ConsumerRecord从 Kafka 消费者收到的实例poll()使用自动提交或容器管理的提交方法之一时的作。 访问Consumer对象。
4 使用此接口处理单个ConsumerRecord从 Kafka 消费者收到的实例poll()使用手动提交方法之一时的作。 访问Consumer对象。
5 使用此接口处理所有ConsumerRecord从 Kafka 消费者收到的实例poll()使用自动提交或容器管理的提交方法之一时的作。AckMode.RECORD使用此接口时不支持,因为侦听器被赋予了完整的批处理。
6 使用此接口处理所有ConsumerRecord从 Kafka 消费者收到的实例poll()使用手动提交方法之一时的作。
7 使用此接口处理所有ConsumerRecord从 Kafka 消费者收到的实例poll()使用自动提交或容器管理的提交方法之一时的作。AckMode.RECORD使用此接口时不支持,因为侦听器被赋予了完整的批处理。 访问Consumer对象。
8 使用此接口处理所有ConsumerRecord从 Kafka 消费者收到的实例poll()使用手动提交方法之一时的作。 访问Consumer对象。
Consumer对象不是线程安全的。 只能在调用侦听器的线程上调用其方法。
您不应执行任何Consumer<?, ?>影响消费者在侦听器中的位置或提交偏移量的方法;容器需要管理此类信息。