Authored by Lixiaodi

异步调用第三方回调

@@ -603,12 +603,13 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher @@ -603,12 +603,13 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher
603 union_type = String.valueOf(unionTypeMatch.getUnionTypeMatch()); 603 union_type = String.valueOf(unionTypeMatch.getUnionTypeMatch());
604 } 604 }
605 String bean =buffer.append("UnionServiceImpl").append("_").append(union_type).toString(); 605 String bean =buffer.append("UnionServiceImpl").append("_").append(union_type).toString();
606 - IUnionService uniteService = null; 606 + final IUnionService uniteService;
607 if(SpringContextUtil.containsBean(bean)){ 607 if(SpringContextUtil.containsBean(bean)){
608 uniteService = SpringContextUtil.getBean(bean, IUnionService.class); 608 uniteService = SpringContextUtil.getBean(bean, IUnionService.class);
609 url = uniteService.getCallbackUrl(click,request); 609 url = uniteService.getCallbackUrl(click,request);
610 }else{ 610 }else{
611 url = unionService.getCallbackUrl(click,request); 611 url = unionService.getCallbackUrl(click,request);
  612 + uniteService = null;
612 } 613 }
613 if (StringUtils.isEmpty(url)) { 614 if (StringUtils.isEmpty(url)) {
614 log.info("activateUnion in success request is {}", request); 615 log.info("activateUnion in success request is {}", request);
@@ -624,13 +625,26 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher @@ -624,13 +625,26 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher
624 url += "?identify_id=" + click.getIdentify_id(); 625 url += "?identify_id=" + click.getIdentify_id();
625 } 626 }
626 activeUnion.info("activateUnion in call url={}", url); 627 activeUnion.info("activateUnion in call url={}", url);
627 - //改成httpclient方式调用  
628 - Pair<Integer, String> pair;  
629 - if (uniteService != null) {  
630 - pair = uniteService.visitCallbackUrl(url);  
631 - } else {  
632 - pair = visitCallbackUrl(url);  
633 - } 628 + final String finalUrl = url;
  629 + final String finalUnionType = union_type;
  630 + // 改成httpclient方式调用:异步
  631 + taskExecutor.execute(() -> {
  632 + Pair<Integer, String> pair;
  633 + if (uniteService != null) {
  634 + pair = uniteService.visitCallbackUrl(finalUrl);
  635 + } else {
  636 + pair = visitCallbackUrl(finalUrl);
  637 + }
  638 + activeUnion.info("activateUnion call union success url={}, and result={}", finalUrl, pair);
  639 + if (pair.getLeft() != 200) {
  640 + log.warn("callback error with request={}", request);
  641 + return;
  642 + }
  643 + // 如果来源是广点通,则把广点通的一些信息记入表,给之后做转化上报使用
  644 + if (finalUnionType.equals("3")) {
  645 + saveUnionActivity(click, request);
  646 + }
  647 + });
634 648
635 try{ 649 try{
636 UnionCallbackLogs unionCallbackLogs = new UnionCallbackLogs(); 650 UnionCallbackLogs unionCallbackLogs = new UnionCallbackLogs();
@@ -640,23 +654,13 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher @@ -640,23 +654,13 @@ public class UnionServiceImpl implements IUnionService,ApplicationEventPublisher
640 unionCallbackLogs.setUrl(url); 654 unionCallbackLogs.setUrl(url);
641 unionCallbackLogs.setIdfa(request.getIdfa()); 655 unionCallbackLogs.setIdfa(request.getIdfa());
642 unionCallbackLogs.setImei(request.getImei()); 656 unionCallbackLogs.setImei(request.getImei());
643 - int code = pair.getLeft(); 657 + int code = 200 /*pair.getLeft()*/;
644 unionCallbackLogs.setResult(String.valueOf(code)); 658 unionCallbackLogs.setResult(String.valueOf(code));
645 unionCallbackLogs.setCreatetime(DateUtils.getCurrentTimeSecond()); 659 unionCallbackLogs.setCreatetime(DateUtils.getCurrentTimeSecond());
646 saveUnionCallbackLogs(unionCallbackLogs); 660 saveUnionCallbackLogs(unionCallbackLogs);
647 }catch (Exception e){ 661 }catch (Exception e){
648 log.warn("save union_callback_logs e={}", e.getMessage()); 662 log.warn("save union_callback_logs e={}", e.getMessage());
649 } 663 }
650 -  
651 - activeUnion.info("activateUnion call union success url={}, and result={}", url, pair);  
652 - if (pair.getLeft() != 200) {  
653 - log.warn("callback error with request={}", request);  
654 - return new UnionResponse(200, "callback error",result);  
655 - }  
656 - //如果来源是广点通,则把广点通的一些信息记入表,给之后做转化上报使用  
657 - if(union_type.equals("3")){  
658 - saveUnionActivity(click,request);  
659 - }  
660 } catch (Exception e) { 664 } catch (Exception e) {
661 log.error("callback error with request={}", request, e); 665 log.error("callback error with request={}", request, e);
662 //return new UnionResponse(204, "callback error"); 666 //return new UnionResponse(204, "callback error");