1. 客户端怎样显式地使用事务?
producer 开启事务(代码片段):
ActiveMQSession session = (ActiveMQSession)connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination= session.createQueue("TEST.FOO");
MessageProducer producer=session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);//开启事务//发送 TransactionInfo 消息 BEGIN
session.getTransactionContext().begin();for (int i = 0; i < 2; i++) {//Create a message
String text = "zhang";
TextMessage message=session.createTextMessage(text);
producer.send(message);
}//session.getTransactionContext().rollback();//提交事务//发送 TransactionInfo 消息 COMMIT_ONE_PHASE
session.getTransactionContext().commit();
2. broker 处理事务的入口:
TransportConnection.processBeginTransaction
TransportConnection.processCommitTr