关于Redisson延迟队列的一些思考(2)
导读:关于Redisson延迟队列的一些思考,Redisson会怎么做延迟队列 首先提供一段简单的Redisson延迟队列的Demo代码给大家学习使用。 maven依赖: dependency> groupId>org.redisson/groupId> artifactId>redisson/artif
关于Redisson延迟队列的一些思考
Redisson会怎么做延迟队列
首先提供一段简单的Redisson延迟队列的Demo代码给大家学习使用。
maven依赖:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.16.8</version>
</dependency>
延迟队列投递方:
package org.idea.redission.framework.delay.queue;
import com.alibaba.fastjson2.JSON;
import org.redisson.Redisson;
import org.redisson.api.RBlockingQueue;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
/**
* @Author idea
* @Date: Created in 10:21 2024/1/28
* @Description
*/
public class DelayQueueConsumerMain {
public static void main(String[] args) {
Config config = new Config();
config.useSingleServer().setAddress("redis://cloud.db:8801").setPassword("pwd");
RedissonClient client = Redisson.create(config);
RBlockingQueue<String> blockingQueue = client.getBlockingQueue("delay_queue");
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("开始拉去延迟消息");
while (true) {
try {
String item = blockingQueue.take();
long currentTime = System.currentTimeMillis();
MessageModel messageModel = JSON.parseObject(item, MessageModel.class);
System.out.println("获取延迟消息,投递时间" + (currentTime - messageModel.getPushTime()) + "ms前,content" + messageModel.getContent());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
延迟队列消费方:
package org.idea.redission.framework.delay.queue;
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.redisson.Redisson;
import org.redisson.api.RBlockingQueue;
import org.redisson.api.RDelayedQueue;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import java.util.concurrent.TimeUnit;
/**
* @Author idea
* @Date: Created in 10:25 2024/1/28
* @Description
*/
@Slf4j
public class DelayQueueProducerMain {
public static void main(String[] args) throws InterruptedException {
Config config = new Config();
config.useSingleServer().setAddress("redis://cloud.db:8801").setPassword("pwd");
RedissonClient client = Redisson.create(config);
RBlockingQueue<String> blockingQueue = client.getBlockingQueue("delay_queue");
RDelayedQueue<String> delayedQueue = client.getDelayedQueue(blockingQueue);
int i = 0;
while (true) {
i++;
TimeUnit.SECONDS.sleep(3);
MessageModel messageModel = new MessageModel();
messageModel.setContent("test-content-" + i);
messageModel.setPushTime(System.currentTimeMillis());
delayedQueue.offer(JSON.toJSONString(messageModel), 3, TimeUnit.SECONDS);
System.out.println("投递第" + i + "条消息进延迟队列");
}
}
}
相关阅读
-
服务器日志分析的重要性 服务器日志分析的方法
今天小编详解服务器日志分析的重要性的相关话题,请看下面详细的介绍。 随着互联网发展的迅速,服务器的重要性越来越被人们所重视。服务器是作为网站的物理基础,日志则是服务器对网
-
主流数据库都有哪几个类型 简要比较国内三个主流数据库
小编为网友们解答主流数据库都有哪几个类型和简要比较国内三个主流数据库方面的知识,接下来一起来看看吧。 关系型数据库 1. MySQL数据库 MySQL是最受欢迎的开源SQL数据库管理系统,它由
-
怎么申请网站注册 在百度上注册网站的流程
小编为你介绍怎么申请网站注册和在百度上注册网站的流程的教程内容,接下来IT袋小编就来介绍。 网站是一种交流沟通工具,人们可以通过网站发布他们想要披露的信息,或者使用网站提供
-
域名解析:别名解析是什么意思 域名怎么解析别名
对于新手网站长来说,可能不知道域名解析: 什么是别名解析?别名解析有什么用?我们怎么做别名解析? 下面IT袋小编就详细的给大家讲解下别名解析的作用。 什么是CNAME别名解析? 所谓


