【发布时间】:2020-01-27 10:39:13
【问题描述】:
我有一个应用程序,我们在其中插入数据库并将事件发布到 ActiveMQ。
我遇到了交易问题。我将用下面的代码解释这个问题:
@Transactional(rollbackFor = Exception.class)
public class ProcessInvoice {
public boolean insertInvoice(Object obj){
/* Some processing logic here */
/* DB Insert */
insert(obj);
/* Some processing logic here again */
/* Send event to Queue 1 */
sendEvent(obj);
/* Send event to Queue 2 */
sendEvent(obj);
return true;
}
}
类用@Transactional 注释,在insertInvoice 方法中我正在做一些处理,插入数据库,并将事件发送到两个队列。
使用上面的代码我面临两个问题:
如果队列很慢,那么我将面临性能问题,因为
sendEvent方法中的进程需要时间。如果由于某种原因 ActiveMQ 宕机或消费者无法处理消息,如何回滚事务?
如何处理这些问题?
【问题讨论】:
标签: java spring transactions activemq