zoukankan      html  css  js  c++  java
  • spring事务手动回滚

    @Transactional(rollbackFor = { Exception.class })
    public JSONObject preSendMsg(AuthInfo authInfo, Message message) {
            JSONObject jsonObject = new ResultJSONObject("000", "消息预发送成功");
            try {
                // 判断参数有效性
                if (null == authInfo || StringUtil.isEmpty(authInfo.getUsername()) || StringUtil.isEmpty(authInfo.getPassword())
                        || null == message || StringUtil.isEmpty(message.getQueueName())
                        || StringUtil.isEmpty(message.getExchange()) || StringUtil.isEmpty(message.getContent())) {
                    return new ResultJSONObject("001", "重要参数不可为空!");
                }
                // 检查消息操作的权限信息
                // 检查队列配置是否存在 1
                JSONObject checkAuthJson = this.checkAuthInfo(authInfo, message.getQueueName());
                if (!"000".equals((String) checkAuthJson.get("resultCode"))) {
                    return checkAuthJson;
                }
                Map<String, Object> mqInfo = checkAuthJson.getJSONObject("mqInfo");
    
                // 检查消息的发送频率,控制流速...TODO
                // 消息去重,相同消息返回相同的msgId 2
                if (!chechMsgUnique(mqInfo, message)) {
                    return new ResultJSONObject("021", "消息内容重复!");
                }
                // 保存消息 3
                MessageTpl messageTpl = saveMessage(mqInfo, message);
                if(null==messageTpl){
                    return new ResultJSONObject("031", "消息保存失败!");
                }
                jsonObject.put("msgId", messageTpl.getMsgId().toString());
            } catch (Exception e) {
                logger.error("preSendMsg_Exception ", e);
                jsonObject=new ResultJSONObject("preSendMsg_Exception", "消息预发送异常");
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动开启事务回滚
            }
            return jsonObject;
        }
  • 相关阅读:
    JS(react)里面Json、String、Map、Object之间的转换
    react里面的几个内容
    object.assign的理解
    buffers与cached的区别
    vncserver错误
    Ubuntu可视化jupyter notebook
    ubuntu可视化桌面安装问题
    素数序列的生成及其应用 Version 2.2
    demo14-修改标签里面的属性
    demo13-修改元素的内容
  • 原文地址:https://www.cnblogs.com/xujishou/p/6210289.html
Copyright © 2011-2022 走看看