JavaSpring上的独立事务
我不太清楚怎么做。但是我正在寻找一种方法来分离函数的事务 我有一个处理每条消息结果的侦听器(JavaSpring上的独立事务,java,spring,transactions,Java,Spring,Transactions,我不太清楚怎么做。但是我正在寻找一种方法来分离函数的事务 我有一个处理每条消息结果的侦听器(messageListener)。在将其发送到下一步(sendToNextProcess)之前,我希望确保第一个事务(updateMessageResults)成功。(是否创建单独的交易?) 如何在JavaSpring上实现这一点?多谢各位 public void messageListener(List<Message> messages) { resultUpdater.updat
messageListener
)。在将其发送到下一步(sendToNextProcess
)之前,我希望确保第一个事务(updateMessageResults
)成功。(是否创建单独的交易?)
如何在JavaSpring上实现这一点?多谢各位
public void messageListener(List<Message> messages) {
resultUpdater.updateMessagesResults(messages);
sendToNextProcess(messages);
}
public void messageListener(列出消息){
resultUpdater.updateMessagesResults(消息);
sendToNextProcess(消息);
}
注意:侦听器和resultUpdater都有@Transactional
注释
谢谢大家! 添加
需要在sendToNextProcess
和updateMessageResults
不要直接调用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) {
}
}
@服务
公共服务{
@自动连线
当前服务当前服务;
@交易的
public void messageListener(列出消息){
resultUpdater.updateMessagesResults(消息);
currentService.sendToNextProcess(消息);
}
@事务性(传播=传播。需要\u新建)
public void sendToNextProcess(列出消息){
}
}
为什么您应该从注入服务调用它,因为@transactional
尝试从类范围外包装它,然后它尝试使用this
调用它,它将不会像您期望的那样工作将更新消息结果
标记为需要新的
作为传播级别。这将为updateMessageResults
启动一个新事务。