zoukankan      html  css  js  c++  java
  • 如何实现分布式的延时队列

    借助redisson实现延时队列

    public class RedissonDelayQueue {
    
        private RedissonClient redissonClient;
        private RBlockingDeque<String> rBlockingDeque;
        private RDelayedQueue<String> rDelayedQueue;
    
        public void delaySend(String jsonObject, Long delay, TimeUnit timeUnit) {
            this.rDelayedQueue.offer(jsonObject, delay, timeUnit);
        }
    
        public RedissonDelayQueue() {
            Config config = new Config();
            config.useClusterServers().setScanInterval(2000).addNodeAddress("redis://10.13.65.178:6390");
            this.redissonClient = Redisson.create(config);
            this.rBlockingDeque = redissonClient.getBlockingDeque("MXZ_DELAY_QUEUE");
            if (this.rBlockingDeque == null) {
                return;
            }
            this.rDelayedQueue = redissonClient.getDelayedQueue(rBlockingDeque);
            if (this.rDelayedQueue == null) {
                return;
            }
            this.startConsumerDelayQueue();
            System.out.println("启动时间" + LocalDateTime.now());
        }
    
        private void startConsumerDelayQueue() {
    
            Thread thread = new Thread(() -> {
                while (true) {
                    try {
                        String jsonObject = this.rBlockingDeque.take();
                        System.out.println("--> 延迟队列获取数据:{}" + jsonObject);
                    } catch (InterruptedException e) {
    
                    }
                }
            });
            thread.setDaemon(true);
            thread.start();
        }
    
        public static void main(String[] args) {
    
            RedissonDelayQueue queue = new RedissonDelayQueue();
            queue.delaySend("one", 10l,TimeUnit.SECONDS);
    
            queue.delaySend("two", 20l,TimeUnit.SECONDS);
        }
    }
  • 相关阅读:
    CSS 整形与优化工具
    下面是小图,点一下上面就会出现大图
    javascript技巧大全
    div实现flash的遮照效果
    表格动态添加删除行
    云计算新模式将终结传统外包模式[转]
    源码过瑞星
    批处理创建、访问、重命名、删除畸形文件/文件夹
    //过360云查杀的代码
    NC反弹提权教程
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14659856.html
Copyright © 2011-2022 走看看