在后端,我想要原子事务,这意味着

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

10-06 13:44