在 Kafka 中,可以使用 KafkaListener 来监听一个或多个主题中的消息。当使用 KafkaListener 监听多个主题时,可能需要指定消息应该分配到哪个分区。
可以使用 @KafkaListener 注解的 partition 属性来指定要监听的分区。该属性接受一个数组,指定要监听的分区编号。例如,以下代码示例指定要监听主题 myTopic 的分区 0 和 1:
@KafkaListener(topicPartitions = {
@TopicPartition(topic = "myTopic", partitions = {"0", "1"})
public void listenToPartition(@Payload String message) {
// 处理消息
另一种方法是使用 @KafkaHandler 注解的 @Header 注解来获取分区信息。以下示例演示了如何使用此方法:
@KafkaListener(topics = "myTopic")
public void listenToPartition(
@Payload String message,
@Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition) {
// 处理消息
在此示例中,@Header 注解用于从消息头中获取分区信息。KafkaHeaders.RECEIVED_PARTITION_ID
表示要获取的消息头属性。将其作为第二个参数传递给方法,可以获取当前处理的消息所属的分区编号。