我使用spring-boot-starter-data-jpa和spring-boot-starter-activemq製作POC。我想在jpa事務提交時在代理(activeMQ)上推送jms消息。彈簧引導xa事務數據源和jms
我的代碼: UtilsateurService與有 「主」 交易:
@Service
public class UtilisateurService {
@Autowired
private UtilisateurRepository utilisateurRepository;
@Autowired
private SendMessage sendMessage;
@Transactional(rollbackOn = java.lang.Exception.class)
public Utilisateur create(Utilisateur utilisateur) throws Exception {
final Utilisateur result = utilisateurRepository.save(utilisateur);
sendMessage.send("creation utilisateur : " + result.getId());
throw new Exception("rollback");
//return result;
}
}
的SendMessage函數類的女巫 「管理」 的JMS消息:
@Component
public class SendMessage {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Value("${jms.queue.destination}")
private String destinationQueue;
public void send(String msg) {
this.jmsMessagingTemplate.convertAndSend(destinationQueue, msg);
}
}
我的主類:
@SpringBootApplication
@EnableJms
@EnableTransactionManagement
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在拋出異常之前,JMS消息在activeMq代理上被推送。所以我沒有經紀人的「回滾」。
如何配置xa事務正在運行?