|
|
@@ -13,36 +13,34 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
-public class RedisDelayQueueRunner implements Runnable, InitializingBean, DisposableBean {
|
|
|
+public class RedisDelayQueueRunner implements Runnable, InitializingBean, DisposableBean {
|
|
|
|
|
|
private Thread thread;
|
|
|
|
|
|
@Autowired
|
|
|
- @Qualifier(ThreadPoolConfig.HOST_EXECUTOR)
|
|
|
+ @Qualifier(ThreadPoolConfig.DELAY_EXECUTOR)
|
|
|
private ThreadPoolTaskExecutor ptask;
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
while (!Thread.currentThread().isInterrupted()) {
|
|
|
- try {
|
|
|
- RedisDelayQueueEnum[] queueEnums = RedisDelayQueueEnum.values();
|
|
|
- for (RedisDelayQueueEnum queueEnum : queueEnums) {
|
|
|
- Object value = RedisDelayedQueueUtil.getDelayQueueData(queueEnum.getCode());
|
|
|
- if (value != null) {
|
|
|
- LogUtils.WS_MSG_RETRY_LOG.info("{} 延迟队列有数据,开始处理,消息内容:{}", queueEnum.getName(), JacksonUtils.toJSONString(value));
|
|
|
- RedisDelayQueueHandle<Object> redisDelayQueueHandle = (RedisDelayQueueHandle<Object>) SpringUtil.getBean(queueEnum.getBeanId());
|
|
|
- ptask.execute(() -> {
|
|
|
+ RedisDelayQueueEnum[] queueEnums = RedisDelayQueueEnum.values();
|
|
|
+ for (RedisDelayQueueEnum queueEnum : queueEnums) {
|
|
|
+ ptask.execute(() -> {
|
|
|
+ try {
|
|
|
+ Object value = RedisDelayedQueueUtil.getDelayQueueData(queueEnum.getCode());
|
|
|
+ if (value != null) {
|
|
|
+ LogUtils.WS_MSG_RETRY_LOG.info("{} 延迟队列有数据,开始处理,消息内容:{}", queueEnum.getName(), JacksonUtils.toJSONString(value));
|
|
|
+ RedisDelayQueueHandle<Object> redisDelayQueueHandle = (RedisDelayQueueHandle<Object>) SpringUtil.getBean(queueEnum.getBeanId());
|
|
|
redisDelayQueueHandle.execute(value);
|
|
|
- });
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ LogUtils.WS_MSG_RETRY_LOG.error("延迟队列处理异常", e);
|
|
|
+ throw new RuntimeException(e);
|
|
|
}
|
|
|
- }
|
|
|
- TimeUnit.MILLISECONDS.sleep(500);
|
|
|
- } catch (InterruptedException e) {
|
|
|
- LogUtils.WS_MSG_RETRY_LOG.error("(Redission延迟队列监测异常中断) {}", e.getMessage());
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
}
|