diff --git a/src/main/java/com/bwie/consumer/DataGeneratorTask.java b/src/main/java/com/bwie/consumer/DataGeneratorTask.java index 23ffac6..43a3386 100644 --- a/src/main/java/com/bwie/consumer/DataGeneratorTask.java +++ b/src/main/java/com/bwie/consumer/DataGeneratorTask.java @@ -7,11 +7,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.util.Base64Utils; import java.io.File; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Base64; +import java.util.Random; import java.util.UUID; /** @@ -26,25 +28,70 @@ public class DataGeneratorTask { @Autowired private RabbitTemplate rabbitTemplate; + private final Random random = new Random(); - @Scheduled(cron = "0/10 * * * * ?") // 每10秒执行一次 - public void generateData() { - // 生成随机数据 - String id = UUID.randomUUID().toString(); - String XM = RandomUtil.generateRandomAlphabetic(8); - String Age = RandomUtil.generateRandomAlphabetic(2); - String Time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); - String plate = RandomUtil.generateRandomAlphabetic(7); - String Card = RandomUtil.generateRandomAlphabetic(18); + private String generateId() { + return String.valueOf(random.nextInt(100000)); + } - // 创建实体类对象 - Data data1 = new Data(id, XM, Age, Time, plate, Card,"",""); - Data data2 = new Data(id, XM, Age, Time, plate, Card,"",""); - Data data3 = new Data(id, XM, Age, Time, plate, Card,"",""); + private String generateName() { + String[] names = {"Alice", "Bob", "Charlie", "David", "Emma", "Frank", "Grace"}; + return names[random.nextInt(names.length)]; + } - // 发送消息到对应的消息队列 - rabbitTemplate.convertAndSend("data1Queue", data1); - rabbitTemplate.convertAndSend("data2Queue", data2); - rabbitTemplate.convertAndSend("data3Queue", data3); + private String generateAge() { + return String.valueOf(random.nextInt(100)); + } + + private String generateTime() { + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return now.format(formatter); + } + + private String generatePlate() { + StringBuilder sb = new StringBuilder(); + sb.append((char) ('A' + random.nextInt(26))); // Random uppercase letter + sb.append((char) ('A' + random.nextInt(26))); // Random uppercase letter + sb.append(String.format("%04d", random.nextInt(10000))); // Random 4-digit number + return sb.toString(); + } + + private String generateCard() { + return String.valueOf(random.nextLong()); + } + + private String generateBase64Image() { + // Generate a random image (for demonstration, you can replace this with actual image handling) + byte[] randomBytes = new byte[100]; // Simulated image data + random.nextBytes(randomBytes); + return Base64Utils.encodeToString(randomBytes); + } + + @Scheduled(fixedRate = 60000) // Run every minute + public void generateAndSendData() { + sendDataToQueue("data1_queue"); + sendDataToQueue("data2_queue"); + sendDataToQueue("data3_queue"); + } + + private void sendDataToQueue(String queueName) { + String id = generateId(); + String name = generateName(); + String age = generateAge(); + String time = generateTime(); + String plate = generatePlate(); + String card = generateCard(); + String photo1 = generateBase64Image(); + String photo2 = generateBase64Image(); + + // Create a JSON message with the generated data + String message = String.format("{\"id\": \"%s\", \"XM\": \"%s\", \"Age\": \"%s\", \"Time\": \"%s\", \"plate\": \"%s\", \"Card\": \"%s\", \"Photo1\": \"%s\", \"Photo2\": \"%s\"}", + id, name, age, time, plate, card, photo1, photo2); + + // Send message to the specified queue + rabbitTemplate.convertAndSend(queueName, message); + + System.out.println("Generated and sent data to " + queueName + " at: " + time); } }