网站推广费用价格广州建筑公司实力排名

diannao/2026/1/24 18:26:47/文章来源:
网站推广费用价格,广州建筑公司实力排名,wordpress中文电商插件,网络空间设计说明怎么写项目场景#xff1a; 在电商、支付等领域#xff0c;往往会有这样的场景#xff0c;用户下单后放弃支付了#xff0c;那这笔订单会在指定的时间段后进行关闭操作#xff0c;细心的你一定发现了像某宝、某东都有这样的逻辑#xff0c;而且时间很准确#xff0c;误差在1s内…项目场景 在电商、支付等领域往往会有这样的场景用户下单后放弃支付了那这笔订单会在指定的时间段后进行关闭操作细心的你一定发现了像某宝、某东都有这样的逻辑而且时间很准确误差在1s内那他们是怎么实现的呢 一般实现的方法有几种使用 redisson、rocketmq、rabbitmq等消息队列的延时投递功能。 解决方案 一般项目集成redis的比较多所以我这篇文章就说下redisson延迟队列如果使用rocketmq或rabbitmq需要额外集成中间件比较麻烦一点。 1.集成redisson maven依赖 dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactIdversion3.21.1/version /dependency yml配置单节点配置可以兼容redis的配置方式 # redis配置 spring:redis:database: 0host: 127.0.0.1password: redispassport: 6001 更详细的配置参考Spring Boot整合Redisson的两种方式-CSDN博客 2.配置多线程 因为延迟队列可能会多个任务同时执行所以需要多线程处理。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import java.util.concurrent.ThreadPoolExecutor;Configuration EnableAsync public class ExecutorConfig {/*** 异步任务自定义线程池*/Bean(name taskExecutor)public ThreadPoolTaskExecutor asyncServiceExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();//配置核心线程数executor.setCorePoolSize(50);//配置最大线程数executor.setMaxPoolSize(500);//配置队列大小executor.setQueueCapacity(300);//允许线程空闲时间executor.setKeepAliveSeconds(60);//配置线程池中的线程的名称前缀executor.setThreadNamePrefix(taskExecutor-);// rejection-policy当pool已经达到max size的时候如何处理新任务// CALLER_RUNS不在新线程中执行任务而是有调用者所在的线程来执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//调用shutdown()方法时等待所有的任务完成后再关闭executor.setWaitForTasksToCompleteOnShutdown(true);//等待所有任务完成后的最大等待时间executor.setAwaitTerminationSeconds(60);return executor;} } 3.具体业务 比如消息通知、关闭订单等 这里加上了Async注解可以异步执行 import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;import java.text.SimpleDateFormat; import java.util.Date;Service public class AsyncService {Asyncpublic void executeQueue(Object value) {System.out.println();System.out.println(当前线程Thread.currentThread().getName());System.out.println(执行任务value);//打印时间方便查看SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(执行任务的时间sdf.format(new Date()));//自己的业务逻辑可以根据id发送通知消息等//......} } 4.延迟队列(关键代码) 这里包括添加延迟队列和消费延迟队列PostConstruct注解的意思是服务启动加载一次参考 Spring Boot项目启动时执行指定的方法-CSDN博客Spring Boot中多个PostConstruct注解执行顺序控制_多个postconstruct执行顺序-CSDN博客 import org.redisson.api.RBlockingQueue; import org.redisson.api.RDelayedQueue; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service;import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.TimeUnit;Service public class TestService {Resourceprivate AsyncService asyncService;Resourceprivate ThreadPoolTaskExecutor executor;Autowiredprivate RedissonClient redissonClient;/*** 添加延迟任务*/public void addQueue() {//获取延迟队列RBlockingQueueObject blockingQueue redissonClient.getBlockingQueue(delayedQueue);RDelayedQueueObject delayedQueue redissonClient.getDelayedQueue(blockingQueue);for (int i 1; i 10; i) {long delayTime 5i; //延迟时间(秒) // long delayTime 5; //这里时间统一可以测试并发执行delayedQueue.offer(延迟任务i, delayTime, TimeUnit.SECONDS);}//打印时间方便查看SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(添加任务的时间sdf.format(new Date()));}/*** 服务启动时加载开始消费延迟队列*/PostConstructpublic void consumer() {System.out.println(服务启动时加载);//获取延迟队列RBlockingQueueObject delayedQueue redissonClient.getBlockingQueue(delayedQueue);//启用一个线程来消费这个延迟队列executor.execute(() -{while (true){try { // System.out.println(while中的线程Thread.currentThread().getName());//获取延迟队列中的任务Object value delayedQueue.poll();if(value null){//如果没有任务就休眠1秒休眠时间根据业务自己定义Thread.sleep(1000); //这里休眠时间越短误差就越小continue;}//异步处理延迟队列中的消息asyncService.executeQueue(value);} catch (Exception e) {e.printStackTrace();}}});} } 5.测试接口  import com.test.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {Autowiredprivate TestService testService;/** 添加延迟任务*/GetMapping(value /addQueue)public String addQueue() {testService.addQueue();return success;}} 6.测试结果 总结 Redisson的的RDelayedQueue是基于Redis实现的而Redis本身并不保证数据的持久性。如果Redis服务器宕机那么所有在RDelayedQueue中的数据都会丢失。因此我们需要在应用层面进行持久化设计例如定期将RDelayedQueue中的数据持久化到数据库。在设计延迟任务时我们应该根据实际需求来合理设置延迟时间避免设置过长的延迟时间导致内存占用过高。 源码https://download.csdn.net/download/u011974797/89225515

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做的网站怎么上传图片网络优化与维护是做什么

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

闸北网站优化公司中国十大电商平台排行榜

一、深度学习的神秘面纱 深度学习,就像是一个超级魔法师,它能够从海量的数据中提炼出隐藏的秘密,然后利用这些秘密来预测未来、识别图像、翻译语言……简直是无所不能!那么,这个魔法师是怎么工作的呢? 二…

中企动力中山分公司网站wordpress顶部菜单调用

15:00面试,15:08就出来了,技术官问我什么是K8s的命令式和声明式资源管理! Kubernetes(通常缩写为K8s)是一个强大的容器编排系统,它允许开发者和运维团队以可伸缩、灵活的方式部署和管理应用程序。在Kubern…

网站加速工具做dj选歌是哪个网站

一维数组的定义方式 在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符 数组名 [常量表达式];其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数&#xff…

电商网站 app两网站会员同步

作用域是指在程序中定义变量的区域,决定了这些变量在哪里可以被访问和使用。JavaScript 中的作用域有全局作用域、函数作用域和块级作用域。 1. 什么是作用域? 作用域是代码中定义变量的区域,它决定了变量的可见性和生命周期。作用域规定了…

饭店网站模板百度网站搜索关键字

背景 OpenHarmony中,三方库的使用有两种方式: 一、固件集成 三方库经由OpenHarmony构建框架编译出的动态库或静态库,打包到rom中 二、应用集成 三方库经由IDE(通过IDE中的cmake)编译出的动态库或静态库&#xff0…

如何建立一个自己的网站一个服务器做多个网站

目录 题目描述 输入 输出 样例输入 样例输出 code 题目描述 “C语言”在程序设计语言中是个闪亮的名字,每个学习计算机及相关专业的人在学习程序设计语言时都会首先关注它。C语言是 20 世纪 70 年代初在贝尔实验室开发出来的一种广为使用 的计算机程序设计语言…

怎样建移动网站小程序代码怎么写

题意:给定一长为L的木棍和n个切割点,每次切割的费用为切割的长度,求最小的费用。 思路:dp,子问题是区间(i,j)的最小费用,临界是(i,j)只有一个切割点。dp[i,j]min(dp[i,k]…

装修上什么网站比较好自建网站阿里云备案通过后怎么做

1、ActivityLifecycleCallbacks的介绍 Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理,注意是在Application里面,路径如下 android.app.Application.ActivityLifecycleCallbacks要求API 14+ (Android 4.0+) ActivityLifecyc…

网站建设人员的工资分配wordpress 批量文章

这是一个很长的故事,嫌长的直接看最后的结论事情经过上周接了个需求,写了个小工具给客户,他要求打包成exe文件,这当然不是什么难事。因为除了写Python的,绝大多数人电脑里都没有Python编译器,所以打包成exe…

千图素材网站吉林省建设项目信息网

博主,开始时候,写的web应用,数据库中的密码,都是直接保存的。真正的原汁原味,真正的所见即所得。 后来,看了别人的web应用都是MD5加密的,感觉很不错,自己也在应用中加入了MD5加密&am…

网站开发人员招聘长沙推广专员招聘

一.前言 在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。为了快速响应市场需求,一个技术变得极为重要,即OTA空中下载…

西青房地产网站建设注册公司什么名字大气

在前端开发中,处理用户与页面的交互是至关重要的一部分。JQuery作为一个广泛应用的JavaScript库,为我们提供了简便而强大的事件绑定机制,使得我们能够更加灵活地响应用户的行为。本篇博客将深入解析 JQuery 的标准事件绑定方式,为…

加强 网站群建设管理谷歌搜索引擎入口2023

前端页面渲染机制是指在 web 开发中,浏览器如何将 HTML、CSS 和 JavaScript 转换为用户可视化的网页界面的过程。这个过程通常包括以下几个主要步骤: 加载 HTML: 首先,浏览器会获取 HTML 文件,并解析其结构。这个过程包括识别 HTM…

营销型网站建设php源码wordpress 路由怎么配

一、之前用过的api管理工具 关于api管理工具,之前用过yapi和postman,但是后来发现了这两个工具 二、新发现的更强大的:Apifox和Eolink Apifox和Eolink,那这两个工具有什么优势呢? 2.1Apifox 其中 Apifox Postman …

如何做网站方案舟山网站建设seo

HTMLTestRunner生成测试报告时,报告的标题在运行前就已经写死在代码了,假如我现在需要在执行完毕后,根据执行结果,把执行的状态写在标题里面,类似的效果如图:标题如果有一条执行错误的,就在后面…

爱奇艺影业公司网站开发意义建设施工安全网络平台 87

5月18日,2019CCF大学生计算机系统与程序设计竞赛(CCSP)华东分赛区比赛及颁奖会在我校举办。今年是CCSP大赛首次采用区域分赛区的比赛,共分为7个赛区,包括东北区(哈尔滨工业大学承办),华北区(北京邮电大学承办)、华东区(南京航空航…

拼多多网站首页医疗机构 网站备案

在学习node的时候,flash是困扰我最久的一个中间件,之前一直都没有很好的理解,这里做一个总结。 参考自:http://yunkus.com/connect-flash-usage/ 什么是flash? The flash is a special area of the session used for s…

58同城网站建设排名个人网站空间

描述 读入一个只包含 , -, *, / 的非负整数计算表达式,计算该表达式的值。 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中…