Introduced
<>3.15.5</> <dependency> <groupId></groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>${}</version> </dependency>
Put in the delay queue
import ; @Autowired private RedissonClient redissonClient; public static final String CardKitMessageDelayQueue = "QUEUE:CARD_KIT"; // Send delay message RBlockingDeque<CardKitRedisBo> blockingDeque = redissonClient .getBlockingDeque(CardKitMessageDelayQueue); RDelayedQueue<CardKitRedisBo> delayedQueue = (blockingDeque); // Calculate the timestamp long delayInSeconds = calculateDifference((), ()); CardKitRedisBo cardKitRedisBo = new CardKitRedisBo(); (()).setTemplateId(()); (cardKitRedisBo, delayInSeconds, );
Listen to delay queues
import ; import .slf4j.Slf4j; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; @Slf4j @Component public class CardKitMessageListener implements ApplicationRunner { public static final String CardKitMessageDelayQueue = "QUEUE:CARD_KIT"; public static final String CardKitMessageDelayLock = "LOCK:CARD_KIT"; @Resource private RedissonClient redissonClient; @Autowired private Tracer tracer; @Autowired private CardKitService cardKitService; @Override public void run(ApplicationArguments args) { new Thread(() -> { RBlockingDeque<CardKitRedisBo> blockingDeque = (CardKitMessageDelayQueue); while (true) { // Obtain the timed task lock RLock rLock = (CardKitMessageDelayLock); try { // Wait up to 5 seconds boolean isLocked = (5, ); if (isLocked) { Span span = ().name("OccupationMessage").start(); try ( ws = (span)) { CardKitRedisBo poll = (); ("Get delay message:{}", (poll)); // Consumption news (poll); } finally { try { (); } catch (Exception ex) { ("Lock release failed:" + ()); } try { (); } catch (Exception ex) { ("fail", ex) } } } } catch (Exception ex) { ("Delayed message handling exception:" + (), ex); } } }).start(); } }
This is all about this article about redis delay queue. For more related redis delay queue content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!