这个版本仍在开发中,目前尚未被认为是稳定的。要使用最新稳定版本,请使用 Spring for Apache Kafka 4.0.4spring-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 使用此接口在使用自动提交或使用容器管理的提交方法时,处理从Kafka消费者poll()操作接收的单个ConsumerRecord实例。
2 使用此接口来处理从 Kafka 消费者 poll() 操作接收到的单个 ConsumerRecord 实例,在使用其中一种手动 提交方法 时。
3 使用此接口来处理从Kafka消费者poll()操作接收的单个ConsumerRecord实例,在使用自动提交或使用容器管理的< a href="3" class="2">提交方法时。 对Consumer对象的访问提供。
4 使用此接口来处理从 Kafka 消费者 poll() 操作接收到的单个 ConsumerRecord 实例,在使用其中一种手动 提交方法 时。 对 Consumer 对象的访问提供。
5 使用此接口处理通过 Kafka 消费者 poll() 操作接收到的所有 ConsumerRecord 实例,在使用自动提交或使用一种容器管理的 提交方法 时。 当使用此接口时,AckMode.RECORD 不支持,因为监听器会收到完整的批次。
6 使用此接口处理通过 Kafka 消费者 poll() 操作接收到的所有 ConsumerRecord 实例,在使用手动的 提交方法 之一时。
7 使用此接口处理通过Kafka消费者poll()操作接收到的所有ConsumerRecord实例,当使用自动提交或使用一种容器管理的提交方法时。在使用此接口时,AckMode.RECORD不支持,因为监听器会收到完整的批次。对Consumer对象的访问已提供。
8 使用此接口处理从 Kafka 消费者 poll() 操作接收到的所有 ConsumerRecord 实例,在使用其中一种手动 提交方法 时。 对 Consumer 对象的访问提供。
The Consumer object is not thread-safe. You must only invoke its methods on the thread that calls the listener.
你不应在监听器中执行任何会影响消费者位置或已提交偏移量的 Consumer<?, ?> 方法;容器需要管理此类信息。