事务消息使用及方案选型思考

238 阅读1分钟

事务消息应用场景

首先需要申明的是,事务消息与业界用 RocketMQ 解决分布式事务,并不是一回事。

RocketMQ 引入事务消息,主要是要解决什么问题呢?接下来以电商一个登录送积分的示例来展开本文的叙述。

在互联网电商发展的初期,为了提高用户的活跃度,通常会采取这样一个提高用户活跃度:一个用户每一天首次登录送积分活动。

在没有提出送积分活动时,用户登录的代码如下:

public Map<String, Object> login(String userName, String password) {
    Map<String, Object> result = new HashMap<>();
    if(StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) {
       result.put("code", 1);
       result.put("msg", "用户名与密码不能为空");
       return result;
     }
     try {
        User user = userMapper.findByUserName(userName);
        if(user == null || !password.equals(user.getPassword()) ) {
            result.put("code", 1);
            result.put("msg", "用户名或密码不正确");
            return result;
         }
         //登录成功,记录登录日志
         UserLoginLogger userLoginLogger