zoukankan      html  css  js  c++  java
  • 订单入库后异步推送

     注意:异步推送,并不会等到当前方法执行完后再执行,而是在当前线程外再开启一个线程,并行执行,所以在项目中如果有配置主从,

    或者异步执行的方法查询数据库的信息的语句更新在推送异步之后,要进行适当的线程休眠,等待主线程执行完毕、等待主线程的数据库事务提交、等待主从数据库之间的数据延迟!

        @Autowired//注入ConfigurableApplicationContext 
        private ConfigurableApplicationContext context;
    
    
    private void push(Order order){
                insertOrder(order);
                //消息通知新增订单
                context.publishEvent(new OrderInsertEvent(order));          
    }
                      
    /**
     * 订单插入事件
     */
    public class OrderInsertEvent extends ApplicationEvent {
        public OrderInsertEvent(Order order) {
            super(order);
        }
    }
    @Log4j2
    @Component
    public class OrderInsertListener {
    
        @Autowired
        @Lazy
        private OrderNoticeService orderNoticeService;
    
    
        @EventListener
        public void onApplicationEvent(OrderInsertEvent event) {
            Order order = (OrderBasicRequestEntity) event.getSource();
            //消息推送订单入库通知
            orderNoticeService.notice(order);
        }
    }
    public interface OrderNoticeService {
        void notice(Order order);
    }    
    @Service
    @Log4j2
    public class OrderNoticeServiceImpl implements OrderNoticeService {
    
        @Async//开启异步
        @Override
        public void notice(Order order) {
            log.info("通知其他服务 :" + order.getId());
         try {
            //执行通知代码,try住异常,不让异常影响其他通知执行
              } catch (Exception e) {
                log.error("质控部分添加出错:", e);
              }
        }
    }
  • 相关阅读:
    Pikachu漏洞平台---XSS(Cross-Site Scripting) 跨站脚本
    Pikachu漏洞练习平台(暴力破解模块)
    DVWA-- 不安全得验证码Insecure CAPTCHA
    DVWA-文件上传 File Upload
    DVWA之CSRF(跨站请求伪造)
    绑定方法与非绑定方法
    XML,面向对象基础
    configparser ,subprocess , xlrd ,xlwt 模块
    logging ,re 模块
    random,json,pickle,hashlib,shutil,hmac,shelve 模块
  • 原文地址:https://www.cnblogs.com/huanghuanghui/p/11430837.html
Copyright © 2011-2022 走看看