package com.xiaopeng.automaticPilot.controller; import com.alibaba.fastjson2.JSONObject; import com.xiaopeng.automaticPilot.service.KafkaConsumerService; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class KafkaTestController { @Autowired private KafkaConsumerService kafkaConsumerService; /** * Kafka消费 - XPU上报高优先级消息 */ @KafkaListener(topics = "topic-prod-robotaxi-xpu-high", groupId = "group-robotaxi-xpu", containerFactory = "highPriorityFactory") public void consumeXpuHigh(String message) { log.info("收到XPU上报高优先级主题消息: {}", message); kafkaConsumerService.topicProdRobotaxiXpuHigh(message); } /** * Kafka消费 - XPU上报低优先级消息 */ @KafkaListener(topics = "topic-prod-robotaxi-xpu-normal", groupId = "group-robotaxi-xpu", containerFactory = "normalPriorityFactory") public void consumeXpuNormal(String message) { log.info("收到XPU上报低优先级主题消息: {}", message); kafkaConsumerService.topicProdRobotaxiXpuNormal(message); } /** * HTTP测试接口 - 模拟高优先级消息 */ @PostMapping("/test/kafka/xpu-high") public void testXpuHigh(@RequestBody String message) { log.info("HTTP测试触发高优先级消息: {}", message); kafkaConsumerService.topicProdRobotaxiXpuHigh(message); } /** * HTTP测试接口 - 模拟低优先级消息 */ @PostMapping("/test/kafka/xpu-normal") public void testXpuNormal(@RequestBody String message) { log.info("HTTP测试触发低优先级消息: {}", message); kafkaConsumerService.topicProdRobotaxiXpuNormal(message); } /** * 模拟推送XPU消息 */ @PostMapping("/base/v1/pushXPUMessage") public R pushXPUMessage(@RequestBody String message) { log.info("收到XPU推送消息: {}", message); JSONObject json = new JSONObject(); json.put("ts", System.currentTimeMillis()); json.put("payload", message); kafkaConsumerService.topicProdRobotaxiXpuHigh(json.toJSONString()); return R.ok(); } }