wxy 2024-04-14 16:02:07 +08:00
parent 4a38278c92
commit f3e2da61b8
1 changed files with 64 additions and 17 deletions

View File

@ -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);
}
}