/***创建一个用户和用户的关联数据*@paramarray$userData*@paramarray$userFinanceData*@returnUserModel*@throws\Exception*/publicfunctionregister($userData,$userFinanceData){$db=UserModel::query()->getConnection();try{$db->beginTransaction();$user=UserModel::create($userData);$userFinanceData['user_id']=$user->id;FinanceAccountModel::create($userFinanceData);//事件触发放在这里1?$db->commit();}catch(\Exception$exception){$db->rollBack();throw$exception;}//事件触发放在这里2?event(newUserCreatedEvent($user));return$user;}如果放在[1]处,那么如果数据库事务提交失败,事件却发出去了。导致事件消费者取不到该用户的数据。如果放在[2]处,那么如果事件触发失败(例如redis连接错误),用户却创建成功了,但是创建用户后需要做的一些事情没有做,导致用户数据不完整。怎么做才好?
慕妹3242003
富国沪深
相关分类