一、该问题的重现步骤是什么?
SpringUtil.publishEvent 发布事件, onApplicationEvent 订阅后续执行的代码mysql事务失效,且 tenantId 不会拼接到sql中。但是通过 AuthUtil.getTenantId 可以获取到租户Id
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
4.2.0
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
我找到原因了, SpringUtil 方法中把异常吃掉了, 这个需要怎么修复? 继续抛出来
public static void publishEvent(ApplicationEvent event) {
if (context == null) {
return;
}
try {
context.publishEvent(event);
} catch (Exception ex) {
log.error(ex.getMessage());
}
}对外抛异常试试
{
.publishEvent(event);
} (Exception ex) {
.error(ex.getMessage());
ex;
}{
.publishEvent(event);
//} (Exception ex) {
// .error(ex.getMessage());
//}这两种我测试了,都可以。 你们看一下有其他合适的方法吗? 就这个 log.error 要不要打印。看截图似乎log.error 是多余了

{
.publishEvent(event);
} (Exception ex) {
.error(ex.getMessage());
ex;
}或
// try {
context.publishEvent(event);
// } catch (Exception ex) {
// log.error(ex.getMessage());
// }
都可以
我截图了,两次发出来内容都变日志了。不知道啥原因

改成这样看看能不能正常抛异常并且回滚
/**
* 发布事件
*
* @param event 事件
*/
@SneakyThrows
public static void publishEvent(ApplicationEvent event) {
if (context == null) {
return;
}
context.publishEvent(event);
}