当前位置: 首页 > news >正文

网站后台账号密码忘记了怎么办做网站界面需要注意什么

网站后台账号密码忘记了怎么办,做网站界面需要注意什么,企业广告平面设计多少钱,怎样建设网站卖农产品使用Redis模拟延时队列 实际上通过MQ实现延时队列更加方便#xff0c;只是在实际业务中种种原因导致最终选择使用redis作为该业务实现的中间件#xff0c;顺便记录一下。 该业务是用于日程短信提醒#xff0c;用户添加日程后#xff0c;就会被放入redis队列中等待被执行发…使用Redis模拟延时队列 实际上通过MQ实现延时队列更加方便只是在实际业务中种种原因导致最终选择使用redis作为该业务实现的中间件顺便记录一下。 该业务是用于日程短信提醒用户添加日程后就会被放入redis队列中等待被执行发送短信提醒业务。 本文介绍如何使用Redis来实现一个简单的延时任务队列通过这个示例可以帮助你理解如何利用Redis的有序集合特性来管理和执行延时任务。 设计思路 Redis有序集合Sorted Set可以很好地用来实现延时队列的功能。通过将任务的执行时间作为分数score来存入有序集合中并定期检查集合中小于等于当前时间的任务来触发执行。 代码实现 JedisCluster连接初始化 首先我们需要初始化JedisCluster连接来与Redis集群进行交互。 private static final String ZSET_KEY sms_delayed_tasks; private JedisCluster jedisCluster;public void RedisClusterScheduler() {SetHostAndPort nodes new HashSet();//从配置文件中读取redis集群配置for (String node : AcpCore.getProp(spring.redis.cluster.nodes).split(,)) {String[] hostPort node.split(:);nodes.add(new HostAndPort(hostPort[0], Integer.parseInt(hostPort[1])));}GenericObjectPoolConfigJedis poolConfig new GenericObjectPoolConfig();poolConfig.setMaxTotal(128);poolConfig.setMaxIdle(128);poolConfig.setMinIdle(16);jedisCluster new JedisCluster(nodes, 2000, 2000, 5, AcpCore.getProp(spring.redis.password), poolConfig);if (!isCalled) {isCalled true;startTaskChecker();} }添加延时任务 我们可以通过指定任务和执行时间来添加延时任务。该方法将执行时间转换为时间戳并将任务存储在Redis有序集合中。 public void addDelayedTask(String task, String time) {long executeTime convertToTimestamp(time);if (executeTime System.currentTimeMillis() / 1000) {jedisCluster.zadd(ZSET_KEY, executeTime, task);log.info(添加任务: task 执行时间: executeTime);} else {log.info(任务时间必须在当前时间之后: task);} }private long convertToTimestamp(String time) {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {return sdf.parse(time).getTime() / 1000;} catch (ParseException e) {e.printStackTrace();return System.currentTimeMillis() / 1000;} }检查和执行任务 通过一个定时任务不断检查当前时间之前的任务并执行。 private void startTaskChecker() {executorService.submit(() - {while (!Thread.currentThread().isInterrupted()) {try {checkAndExecuteTasks();Thread.sleep(1000);} catch (Exception e) {log.info(new Date() 发生异常但不中断异常是 e);}}}); }private void checkAndExecuteTasks() {long currentTime System.currentTimeMillis() / 1000;SetString tasks jedisCluster.zrangeByScore(ZSET_KEY, 0, currentTime);for (String task : tasks) {jedisCluster.zrem(ZSET_KEY, task);executeTask(task);} }执行任务的逻辑 假设任务内容是一个JSON对象执行逻辑在这里可以是任何操作比如调用外部服务、发送消息等。 private void executeTask(String taskJson) {JSONObject task JSONObject.parseObject(taskJson);// 在此处添加具体的业务逻辑log.info(执行任务: task); }总结 通过Redis的有序集合和简单的定时器能够实现一个简洁有效的延时任务队列。 当然这个示例是一个简化的模型在生产环境中你需要考虑任务的幂等性、系统崩溃后的恢复策略、任务的优先级等问题。希望本文能为你提供实现延时队列的思路和参考。
http://www.dnsts.com.cn/news/49831.html

相关文章:

  • 优秀网站制作实例展示建设工程合同印花税计税依据
  • 网站页面太多怎么做网站地图网页设计与制作建立站点实践报告
  • saas建站没有网站源代码么如何做网站的版块规划
  • 站点推广策略包括做dna胎儿亲子鉴定网站
  • 西安网站建设方案优化备案多个网站
  • wordpress多站点建站大学生做网上英语翻译兼职网站
  • 企业网站 自适应深圳涂料网站建设
  • 做网站游戏的网站有哪些wordpress 插件 上传
  • 网站手机版如何制作网站及单位网站建设情况
  • 免费做橙光封面的网站pc网站设计哪家公司好
  • 网站快照查询马鞍山网站建设服务开发
  • 泰安网络营销网站建设网站建设审批
  • 北京著名网站设计公司为企业做网站
  • 温州科技网站建设搜讯网站建设
  • 图书类网站开发的背景WordPress点击显示弹窗内容
  • 汽车租赁网站开发ks数据分析神器
  • 网站关键词怎么修改汕头网站关键词推广
  • c 写网站建设框架网页美工设计的四大原则
  • wordpress 网页存在哪里网站优化都是怎么做的
  • 模板网站如何建设优惠券领取网站开发
  • 网站开发 盈利唐山seo公司
  • 可视化 网站开发工具三明做网站
  • 班级网站模板下载佛山高端画册设计公司
  • 营销型外贸网站建设软件西安做网站优化公司报价
  • 四川网站推广优化公司网站登陆后台管理中心不能修改前台主页
  • 网站模板 阿里网络营销平台建设
  • 腾讯学生云服务器如何做网站app开发公司招聘
  • 通过网站做跳板有什么网站可以免费做图
  • 手机网站带后台源代码鹤壁网站建设兼职
  • 网站建设与制作实验报告文章类网站后台