延时队列

泸州-视觉+扫码-昆船
LAPTOP-S9HJSOEB\昊天 9 months ago
parent 22388b1fe5
commit d12c81a48e

@ -3,9 +3,11 @@ package com.zhehekeji.web.pojo;
import lombok.Data;
import java.util.List;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
@Data
public class IndustrialCameraVO {
public class IndustrialCameraVO implements Delayed {
private String name;
private String picImg;
private String typeMacth;
@ -20,4 +22,33 @@ public class IndustrialCameraVO {
private int flag;
private String streetId;
private int sentCount;
private long executeTime;
public IndustrialCameraVO(){
this.executeTime = System.currentTimeMillis() + 2000;
}
/**
*
*
* @param unit
* @return
*/
@Override
public long getDelay(TimeUnit unit) {
// 计算延迟时间,将时间差转换为指定的时间单位
return unit.convert(this.executeTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
}
/**
* Delayed
*
* @param o Delayed
* @return 0
*/
@Override
public int compareTo(Delayed o) {
// 比较两个Delayed对象的延迟时间以毫秒为单位
return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));
}
}

@ -26,11 +26,12 @@ import static com.zhehekeji.web.service.KuKouService.setTrayCode;
public class CommandQueue {
// 增加queue
public static void addCommand(IndustrialCameraVO scTransmission) {
queue.add(scTransmission);
delayQueue.add(scTransmission);
}
private static ExecutorService exec = Executors.newFixedThreadPool(1);
private static DelayQueue<IndustrialCameraVO> delayQueue = new DelayQueue<>();
private static LinkedBlockingQueue<IndustrialCameraVO> queue = new LinkedBlockingQueue<>();
// private static LinkedBlockingQueue<IndustrialCameraVO> queue = new LinkedBlockingQueue<>();
public static void sentHttp(RestTemplate restTemplate, ConfigProperties configProperties){
exec.execute(new Consumer(restTemplate, configProperties));
@ -50,7 +51,7 @@ public class CommandQueue {
while (true) {
try {
// CameraControlModule cameraControlModule = SpringContextUtil.getBean(CameraControlModule.class);
IndustrialCameraVO scTransmission = queue.take();
IndustrialCameraVO scTransmission = delayQueue.take();
if(scTransmission != null){
try {

Loading…
Cancel
Save