Java spring 的单独交易
Separate transaction on Java spring
我不太确定该怎么做。但我正在寻找一种方法来分离函数的事务。
我有一个处理每条消息结果的侦听器 (messageListener
)。在将其发送到下一步 (sendToNextProcess
) 之前,我想确保第一笔交易 (updateMessagesResults
) 成功。 (也许创建一个单独的交易?)
如何在 Java Spring 上执行此操作?谢谢
public void messageListener(List<Message> messages) {
resultUpdater.updateMessagesResults(messages);
sendToNextProcess(messages);
}
注意:监听器和resultUpdater都有@Transactional
注解。
谢谢!
在 sendToNextProcess
和 updateMessagesResults
上添加 REQUIRES_NEW
并且不要直接调用 sendToNextProcess
因为它不会工作你应该注入当前服务并从这样调用它
@Service
public CurrentService {
@Autowire
CurrentService CurrentService;
@Transactional
public void messageListener(List<Message> messages) {
resultUpdater.updateMessagesResults(messages);
currentService.sendToNextProcess(messages);
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void sendToNextProcess(List<Message> messages) {
}
}
为什么你应该从注入服务中调用它,因为 @transactional
尝试从 class 范围外包装它,然后尝试用 this
调用它,但它不会像你期望的那样工作
我不太确定该怎么做。但我正在寻找一种方法来分离函数的事务。
我有一个处理每条消息结果的侦听器 (messageListener
)。在将其发送到下一步 (sendToNextProcess
) 之前,我想确保第一笔交易 (updateMessagesResults
) 成功。 (也许创建一个单独的交易?)
如何在 Java Spring 上执行此操作?谢谢
public void messageListener(List<Message> messages) {
resultUpdater.updateMessagesResults(messages);
sendToNextProcess(messages);
}
注意:监听器和resultUpdater都有@Transactional
注解。
谢谢!
在 sendToNextProcess
和 updateMessagesResults
REQUIRES_NEW
并且不要直接调用 sendToNextProcess
因为它不会工作你应该注入当前服务并从这样调用它
@Service
public CurrentService {
@Autowire
CurrentService CurrentService;
@Transactional
public void messageListener(List<Message> messages) {
resultUpdater.updateMessagesResults(messages);
currentService.sendToNextProcess(messages);
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void sendToNextProcess(List<Message> messages) {
}
}
为什么你应该从注入服务中调用它,因为 @transactional
尝试从 class 范围外包装它,然后尝试用 this
调用它,但它不会像你期望的那样工作