package com.dobbinsoft.fw.support.mq; import com.dobbinsoft.fw.support.component.CacheComponent; import org.springframework.beans.factory.annotation.Autowired; import java.util.concurrent.Callable; public class RedisNotifyDelayedMessageQueueImpl implements DelayedMessageQueue { @Autowired private CacheComponent cacheComponent; @Override public Boolean publishTask(Integer code, String value, Integer delay) { if (delay < 0) { delay = 1; } cacheComponent.putRaw(assembleKey(code, value), "", delay); return true; } @Override public Boolean deleteTask(Integer code, String value) { cacheComponent.del(assembleKey(code, value)); return true; } @Override public Long getTaskTime(Integer code, String value) { return cacheComponent.getKeyExpire(assembleKey(code, value)); } @Override public Boolean publishTask(Callable task, Integer delay) { throw new RuntimeException(); } public String assembleKey(Integer code, String value) { if (value == null) { value = ""; } StringBuilder sb = new StringBuilder("TASK:"); sb.append(code + ":"); sb.append(value); return sb.toString(); } }