在后端,我想要原子事务,这意味着
try{
get database connection
update employee record;
update department record;
produces messages 1 on queue1
produces messages 2 on queue2
// some exception occured
}
finally{
connection.rollback();
// how to roll back the messages from queue
}
同样,如果消息代理关闭,我将如何确保消息一旦启动就被删除。
我正在使用ActiveMQ
最佳答案
假设您有一个JmsSession发送消息,则可以执行jmsSession.commit()
和jmsSession.rollback()
来完成jms事务。
如果您希望消息是持久性的,即可以在jms服务器崩溃后将其传递,则可以将消息的传递模式设置为持久性:jmsMessageProducer.send(msg, DeliveryMode.PERSITENT)
详情请参见:
http://docs.oracle.com/javaee/6/api/javax/jms/Session.html