訊息監聽器

當您使用訊息監聽器容器時,您必須提供一個監聽器來接收資料。目前支援八種訊息監聽器介面。以下列表顯示這些介面

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 實例。提供對 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 物件的存取權。
Consumer 物件不是執行緒安全的。您只能在呼叫監聽器的執行緒上調用其方法。
您不應在監聽器中執行任何會影響消費者位置或已提交偏移量的 Consumer<?, ?> 方法;容器需要管理此類資訊。