银行账号同步多线程处理

来源:互联网 发布:精锐摇杆淘宝店 编辑:程序博客网 时间:2024/05/17 04:15

需求:银行账号同步只能一个一个账号同步,但可能有很个账号需要同步,如果只有一个线程处理,客户端需要等很久才能处理完


改进:客户端发送同步请求(对象)过来,直接放到队列中,然后直接返回200给客户端,这样客户端就不需要等待,可以很快得到反馈


1. 客户端代码入口: BankSynchroProcessor.getInstance().acceptRequest(bsd);

              

 public void acceptRequest(BankSyncDto obj) throws Exception {        RequesttHandler request = new RequesttHandler(obj);        executor.execute(request);    }

class RequesttHandler implements Runnable {        BankSyncDto obj;        public RequesttHandler(BankSyncDto obj) {            this.obj = obj;        }        @Override        public void run() {            try {                handler.doHandler(obj, instance);            } catch (Throwable t) {                errorHandler.doHandler(t);            }        }    }



handler code:


 @Override    public void doHandler(BankSyncDto bd, BankSynchroProcessor process) throws Exception {        try {....处理具体逻辑,返回结果JsonResultBeanCode
            // 处理结果JsonResultBeanCode,如果失败,则重新放入队列中            if (!jsonResultBean.getCode().equals(JsonResultBeanCode.SUC)) {                if (bd.getTimes() <= 2) {// 重发三次                    bd.setTimes(bd.getTimes() + 1);                    process.acceptRequest(bd);                } else {                    // log error log                    writeLog(bd);                }            }



0 0
原创粉丝点击