Message Listeners
当你使用 message listener container 时,你必须提供一个侦听器来接收数据。当前有八个受支持的邮件侦听器接口。如下清单所示这些接口:
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 | 在使用自动提交或某一个容器管理的 commit methods 时,使用此接口处理从 Kafka 消费者 poll() 操作接收的各个 ConsumerRecord 实例。 |
2 | 使用此接口处理在使用某一个手动 commit methods 时从 Kafka 消费者 poll() 操作接收的各个 ConsumerRecord 实例。 |
3 | 在使用自动提交或某一个容器管理的 commit methods 时,使用此接口处理从 Kafka 消费者 poll() 操作接收的各个 ConsumerRecord 实例。访问 Consumer 对象。 |
4 | 使用此接口处理在使用某一个手动 commit methods 时从 Kafka 消费者 poll() 操作接收的各个 ConsumerRecord 实例。访问 Consumer 对象。 |
5 | 在使用自动提交或某一个容器管理的 commit methods 时,使用此接口处理从 Kafka 消费者 poll() 操作接收的所有 ConsumerRecord 实例。由于侦听器提供完整批处理,因此在使用此接口时不受支持 AckMode.RECORD 。 |
6 | 在使用某一个手动 commit methods 时,使用此接口处理从 Kafka 消费者 poll() 操作接收的所有 ConsumerRecord 实例。 |
7 | 在使用自动提交或某一个容器管理的 commit methods 时,使用此接口处理从 Kafka 消费者 poll() 操作接收的所有 ConsumerRecord 实例。由于侦听器提供完整批处理,因此在使用此接口时不受支持 AckMode.RECORD 。访问 Consumer 对象。 |
8 | 使用此接口处理在使用某一个手动 commit methods 时从 Kafka 消费者 poll() 操作接收的所有 ConsumerRecord 实例。访问 Consumer 对象。 |
Consumer
对象不是线程安全的。您必须仅在其调用侦听器的线程中调用其方法。
您不应在侦听器中执行任何影响消费者位置或已提交偏移量的 Consumer<?, ?>
方法;该容器需要管理此类信息。