訊息監聽器

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

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<?, ?> 方法;容器需要管理這些資訊。