文档章节

后台异步处理

 一曲相思
发布于 2014/08/15 18:25
字数 467
阅读 1147
收藏 11

我们知道,在前台为了提高用户体验度,在很多情况下都会去用ajax发异步处理一些请求,比如用户登录,注册等等.最近在做的项目中,在后台也老用到异步处理一些数据,比如当注册用户过多,一般我们的数据连接池里面就的数据连接是固定,当用户需要的连接数大于我们数据连接池所支持的数据连接数时,就会出现阻塞这种情况,用户就会感觉很慢,我们可以先返回一个消息给用户说他注册成功,然后我们异步处理,将用户的注册信息插入到数据库中.这样给用户的体验效果会好一点(这只是举个例子,当然在实际操作中我们这样做的情况很少,因为的话当返回给用户提示信息的时候,用户去登录却登录不上.),注册信息过多。。。

1.我们异步处理后台信息有两个方法 当并发量不是很高的时候 我们可以在后台起一个定时任务(ScheduledTaskExecutorFactory.getScheduledTaskExecutor().scheduleWithFixedDelay)

2.当我们并发量高的时候 我们就要用到队列了

首先 我们先创建一个队列

private static final Logger log = LoggerFactory.getLogger(PushMessageBean.class);

    private static final int PUSH_MESSAGE_QUEUE_SIZE = 10;

    private BlockingQueue<PushMessage> messagequeue = new ArrayBlockingQueue<PushMessage>(PUSH_MESSAGE_QUEUE_SIZE);

然后 我们把数据加入队列

    /**

     * 外部放入

     * 

     * @param syncDetail

     */

    public void putQueue(PushMessage pushMessage) {

        while (!messagequeue.offer(pushMessage)) {

            log.debug("PushMessage的queue满了,请求插入");

            ScheduledTaskExecutorFactory.getScheduledTaskExecutor().execute(new QueueInsertTask(messagequeue));


        }

    }

最后我们对队列中的数据进行操作

当然 为了能够达到最好的同步效果 我们最好也起一个定时任务

   public void initialize() {

        // 定时的去清理queue中的数据,入库

        ScheduledTaskExecutorFactory.getScheduledTaskExecutor().scheduleWithFixedDelay(

                new QueueInsertTask(messagequeue), 10, 10, TimeUnit.SECONDS);

    }

© 著作权归作者所有

下一篇: ThreadLocal
粉丝 3
博文 24
码字总数 8362
作品 0
杭州
高级程序员
私信 提问
Android IntentService的使用和源码分析

引言 Service服务是Android四大组件之一,在Android中有着举足重轻的作用。Service服务是工作的UI线程中,当你的应用需要下载一个文件或者播放音乐等长期处于后台工作而有没有UI界面的时候,...

天王盖地虎626
06/11
8
0
android之AsyncTask

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

长平狐
2013/12/25
54
0
android AsyncTask介绍

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

墨梅
2014/10/29
128
0
Android AsyncTask

简介: AsyncTask是android提供的轻量级的异步类。比Handler更轻量级一些,适用于简单的异步处理。 AsyncTask内部封装了Thread和Handler,简化Thread+Handler,可以让我们在后台进行计算并且把...

SRain215
2016/03/18
64
0
【php增删改查实例】第十八节 - login.php编写

1.对用户名和密码进行非空判断(后台验证) 2. 进行数据库链接 根据用户名和密码进行用户表的查询,如果用户存在,那么查询出来的数量肯定等于1,否则,认为用户名和密码错误。还有一种情况...

剽悍一小兔
2018/06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
13分钟前
1
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
23分钟前
1
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
23分钟前
1
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
28分钟前
1
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部