Commit f3a26a55 authored by yanzg's avatar yanzg

修改公式和计算帮助类

parent 0ff51e27
......@@ -11,6 +11,9 @@ import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 评论模块消息队列处理
*
......@@ -29,14 +32,9 @@ public class YzgMqProcedure implements InitializingBean {
/**
* 默认100天延迟
*/
public static final TimeUnit[] YZG_MQ_SYSTEM_QUEUE_PLAN_TIME = new TimeUnit[]{
new TimeUnit("Second", 1000),
new TimeUnit("Second:8", 1000 * 8),
new TimeUnit("Minute", 1000 * 60),
new TimeUnit("Minute:8", 1000 * 60 * 8),
new TimeUnit("Hour", 1000 * 60 * 60),
new TimeUnit("Hour:8", 1000 * 60 * 60 * 8)
};
public static final TimeUnit YZG_MQ_SYSTEM_QUEUE_PLAN_MIN = new TimeUnit("Second", 1000);
public static final TimeUnit YZG_MQ_SYSTEM_QUEUE_PLAN_MAX = new TimeUnit("Day", 1000 * 60 * 60 * 24);
public static final List<TimeUnit> YZG_MQ_SYSTEM_QUEUE_PLAN_TIME = new ArrayList<>();
/**
* 执行的消息队列
*/
......@@ -61,6 +59,15 @@ public class YzgMqProcedure implements InitializingBean {
public void afterPropertiesSet() throws Exception {
mqService.createQueue(new QueueVo(YZG_MQ_SYSTEM_QUEUE));
mqService.createQueue(new QueueVo(YZG_MQ_SYSTEM_QUEUE_PLAN));
if (YZG_MQ_SYSTEM_QUEUE_PLAN_TIME.isEmpty()) {
long now = YZG_MQ_SYSTEM_QUEUE_PLAN_MIN.unit;
int count = 1;
while (now < YZG_MQ_SYSTEM_QUEUE_PLAN_MAX.unit) {
YZG_MQ_SYSTEM_QUEUE_PLAN_TIME.add(new TimeUnit(String.format("Second:%d", count), 1000));
count = count * 2;
now = YZG_MQ_SYSTEM_QUEUE_PLAN_MIN.unit * count;
}
}
for (TimeUnit item : YZG_MQ_SYSTEM_QUEUE_PLAN_TIME) {
mqService.createQueue(new QueueVo(getQueueName(item), item.unit, YZG_MQ_SYSTEM_QUEUE_PLAN));
}
......@@ -83,20 +90,17 @@ public class YzgMqProcedure implements InitializingBean {
* @return
*/
private TimeUnit getTimeUnit(long waitTime) {
TimeUnit prevUnit = YZG_MQ_SYSTEM_QUEUE_PLAN_TIME[0];
TimeUnit prevUnit = YZG_MQ_SYSTEM_QUEUE_PLAN_MIN;
for (TimeUnit timeUnit : YZG_MQ_SYSTEM_QUEUE_PLAN_TIME) {
// 在时间范围内,则返回大于等待时间的队列
if (timeUnit.unit >= waitTime) {
if (Math.abs(waitTime - prevUnit.unit) < Math.abs(timeUnit.unit - waitTime)) {
return prevUnit;
}
return timeUnit;
break;
}
// 上次单位
prevUnit = timeUnit;
}
// 返回最大时间的队列
return YZG_MQ_SYSTEM_QUEUE_PLAN_TIME[YZG_MQ_SYSTEM_QUEUE_PLAN_TIME.length - 1];
return prevUnit;
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment