本文整理汇总了Java中org.apache.activemq.artemis.api.core.client.ClientSession.prepare方法的典型用法代码示例。如果您正苦于以下问题:Java ClientSession.prepare方法的具体用法?Java ClientSession.prepare怎么用?Java ClientSession.prepare使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.activemq.artemis.api.core.client.ClientSession
的用法示例。
在下文中一共展示了ClientSession.prepare方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: addEmptyTransaction
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
/**
* @param xid
* @throws ActiveMQException
*/
private void addEmptyTransaction(final Xid xid) throws Exception {
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(true, false, false);
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
sf.close();
}
示例2: testEmptyXID
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test
public void testEmptyXID() throws Exception {
Xid xid = newXID();
ClientSession session = sessionFactory.createSession(true, false, false);
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.rollback(xid);
session.close();
messagingService.stop();
// do the same test with a file persistence now
messagingService = createServer(true, configuration, -1, -1, addressSettings);
messagingService.start();
sessionFactory = createSessionFactory(locator);
xid = newXID();
session = sessionFactory.createSession(true, false, false);
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.rollback(xid);
xid = newXID();
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.commit(xid, false);
session.close();
xid = newXID();
session = sessionFactory.createSession(true, false, false);
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.rollback(xid);
session.close();
messagingService.start();
sessionFactory = createSessionFactory(locator);
xid = newXID();
session = sessionFactory.createSession(true, false, false);
session.start(xid, XAResource.TMNOFLAGS);
session.end(xid, XAResource.TMSUCCESS);
session.rollback(xid);
session.close();
messagingService.stop();
messagingService.start();
// This is not really necessary... But since the server has stopped, I would prefer to keep recreating the factory
sessionFactory = createSessionFactory(locator);
session = sessionFactory.createSession(true, false, false);
Xid[] xids = session.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(0, xids.length);
session.close();
}
示例3: testMultipleTxSendWithCommit
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
public void testMultipleTxSendWithCommit(final boolean stopServer) throws Exception {
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
Xid xid2 = new XidImpl("xa2".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
ClientMessage m1 = createTextMessage("m1");
ClientMessage m2 = createTextMessage("m2");
ClientMessage m3 = createTextMessage("m3");
ClientMessage m4 = createTextMessage("m4");
ClientMessage m5 = createTextMessage("m5");
ClientMessage m6 = createTextMessage("m6");
ClientMessage m7 = createTextMessage("m7");
ClientMessage m8 = createTextMessage("m8");
ClientSession clientSession2 = sessionFactory.createSession(true, false, true);
ClientProducer clientProducer2 = clientSession2.createProducer(atestq);
clientSession2.start(xid2, XAResource.TMNOFLAGS);
clientProducer2.send(m1);
clientProducer2.send(m2);
clientProducer2.send(m3);
clientProducer2.send(m4);
clientSession2.end(xid2, XAResource.TMSUCCESS);
clientSession2.prepare(xid2);
clientSession2.close();
clientSession.start(xid, XAResource.TMNOFLAGS);
clientProducer.send(m5);
clientProducer.send(m6);
clientProducer.send(m7);
clientProducer.send(m8);
clientSession.end(xid, XAResource.TMSUCCESS);
clientSession.prepare(xid);
if (stopServer) {
stopAndRestartServer();
} else {
recreateClients();
}
Xid[] xids = clientSession.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(xids.length, 2);
assertEqualXids(xids, xid, xid2);
xids = clientSession.recover(XAResource.TMENDRSCAN);
Assert.assertEquals(xids.length, 0);
clientSession.commit(xid, false);
clientSession.commit(xid2, false);
clientSession.start();
ClientMessage m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m5");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m6");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m7");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m8");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m1");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m2");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m3");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m4");
}
示例4: testMultipleTxSendWithRollback
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
public void testMultipleTxSendWithRollback(final boolean stopServer) throws Exception {
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
Xid xid2 = new XidImpl("xa2".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
ClientMessage m1 = createTextMessage("m1");
ClientMessage m2 = createTextMessage("m2");
ClientMessage m3 = createTextMessage("m3");
ClientMessage m4 = createTextMessage("m4");
ClientMessage m5 = createTextMessage("m5");
ClientMessage m6 = createTextMessage("m6");
ClientMessage m7 = createTextMessage("m7");
ClientMessage m8 = createTextMessage("m8");
ClientSession clientSession2 = sessionFactory.createSession(true, false, true);
ClientProducer clientProducer2 = clientSession2.createProducer(atestq);
clientSession2.start(xid2, XAResource.TMNOFLAGS);
clientProducer2.send(m1);
clientProducer2.send(m2);
clientProducer2.send(m3);
clientProducer2.send(m4);
clientSession2.end(xid2, XAResource.TMSUCCESS);
clientSession2.prepare(xid2);
clientSession2.close();
clientSession.start(xid, XAResource.TMNOFLAGS);
clientProducer.send(m5);
clientProducer.send(m6);
clientProducer.send(m7);
clientProducer.send(m8);
clientSession.end(xid, XAResource.TMSUCCESS);
clientSession.prepare(xid);
if (stopServer) {
stopAndRestartServer();
} else {
recreateClients();
}
Xid[] xids = clientSession.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(xids.length, 2);
assertEqualXids(xids, xid, xid2);
xids = clientSession.recover(XAResource.TMENDRSCAN);
Assert.assertEquals(xids.length, 0);
clientSession.rollback(xid);
clientSession.rollback(xid2);
clientSession.start();
ClientMessage m = clientConsumer.receiveImmediate();
Assert.assertNull(m);
}
示例5: testMultipleTxSendWithCommitAndRollback
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
public void testMultipleTxSendWithCommitAndRollback(final boolean stopServer) throws Exception {
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
Xid xid2 = new XidImpl("xa2".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
ClientMessage m1 = createTextMessage("m1");
ClientMessage m2 = createTextMessage("m2");
ClientMessage m3 = createTextMessage("m3");
ClientMessage m4 = createTextMessage("m4");
ClientMessage m5 = createTextMessage("m5");
ClientMessage m6 = createTextMessage("m6");
ClientMessage m7 = createTextMessage("m7");
ClientMessage m8 = createTextMessage("m8");
ClientSession clientSession2 = sessionFactory.createSession(true, false, true);
ClientProducer clientProducer2 = clientSession2.createProducer(atestq);
clientSession2.start(xid2, XAResource.TMNOFLAGS);
clientProducer2.send(m1);
clientProducer2.send(m2);
clientProducer2.send(m3);
clientProducer2.send(m4);
clientSession2.end(xid2, XAResource.TMSUCCESS);
clientSession2.prepare(xid2);
clientSession2.close();
clientSession.start(xid, XAResource.TMNOFLAGS);
clientProducer.send(m5);
clientProducer.send(m6);
clientProducer.send(m7);
clientProducer.send(m8);
clientSession.end(xid, XAResource.TMSUCCESS);
clientSession.prepare(xid);
if (stopServer) {
stopAndRestartServer();
} else {
recreateClients();
}
Xid[] xids = clientSession.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(xids.length, 2);
assertEqualXids(xids, xid, xid2);
xids = clientSession.recover(XAResource.TMENDRSCAN);
Assert.assertEquals(xids.length, 0);
clientSession.rollback(xid);
clientSession.commit(xid2, false);
clientSession.start();
ClientMessage m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m1");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m2");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m3");
m = clientConsumer.receive(1000);
Assert.assertNotNull(m);
Assert.assertEquals(m.getBodyBuffer().readString(), "m4");
m = clientConsumer.receiveImmediate();
Assert.assertNull(m);
}
示例6: testListPreparedTransactionDetails
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test
public void testListPreparedTransactionDetails() throws Exception {
SimpleString atestq = new SimpleString("BasicXaTestq");
Xid xid = newXID();
ServerLocator locator = createInVMNonHALocator();
ClientSessionFactory csf = createSessionFactory(locator);
ClientSession clientSession = csf.createSession(true, false, false);
clientSession.createQueue(atestq, atestq, null, true);
ClientMessage m1 = createTextMessage(clientSession, "");
ClientMessage m2 = createTextMessage(clientSession, "");
ClientMessage m3 = createTextMessage(clientSession, "");
ClientMessage m4 = createTextMessage(clientSession, "");
m1.putStringProperty("m1", "m1");
m2.putStringProperty("m2", "m2");
m3.putStringProperty("m3", "m3");
m4.putStringProperty("m4", "m4");
ClientProducer clientProducer = clientSession.createProducer(atestq);
clientSession.start(xid, XAResource.TMNOFLAGS);
clientProducer.send(m1);
clientProducer.send(m2);
clientProducer.send(m3);
clientProducer.send(m4);
clientSession.end(xid, XAResource.TMSUCCESS);
clientSession.prepare(xid);
ActiveMQServerControl serverControl = createManagementControl();
JsonArray jsonArray = JsonUtil.readJsonArray(serverControl.listProducersInfoAsJSON());
assertEquals(1, jsonArray.size());
assertEquals(4, ((JsonObject) jsonArray.get(0)).getInt("msgSent"));
clientSession.close();
locator.close();
String txDetails = serverControl.listPreparedTransactionDetailsAsJSON();
Assert.assertTrue(txDetails.matches(".*m1.*"));
Assert.assertTrue(txDetails.matches(".*m2.*"));
Assert.assertTrue(txDetails.matches(".*m3.*"));
Assert.assertTrue(txDetails.matches(".*m4.*"));
}
示例7: internalTestSendRollback
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
private void internalTestSendRollback(final boolean isXA, final boolean durable) throws Exception {
ClientSession session = null;
ActiveMQServer server = createServer(true, isNetty(), storeType);
server.start();
ClientSessionFactory sf = addSessionFactory(createSessionFactory(locator));
session = sf.createSession(isXA, false, false);
session.createQueue(ADDRESS, ADDRESS, true);
Xid xid = null;
if (isXA) {
xid = RandomUtil.randomXid();
session.start(xid, XAResource.TMNOFLAGS);
}
ClientProducer producer = session.createProducer(ADDRESS);
Message clientFile = createLargeClientMessageStreaming(session, 50000, durable);
for (int i = 0; i < 1; i++) {
producer.send(clientFile);
}
if (isXA) {
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
server.stop();
server.start();
sf = createSessionFactory(locator);
session = sf.createSession(isXA, false, false);
session.rollback(xid);
} else {
session.rollback();
}
session.close();
validateNoFilesOnLargeDir();
}
示例8: internalTest
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
private void internalTest(final boolean isCommit) throws Exception {
Configuration configuration = createDefaultInVMConfig().setJMXManagementEnabled(true);
ActiveMQServer server = createServer(false, configuration);
server.setMBeanServer(mbeanServer);
server.start();
Xid xid = newXID();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(true, false, false);
session.createQueue(ADDRESS, ADDRESS, true);
session.start(xid, XAResource.TMNOFLAGS);
ClientProducer producer = session.createProducer(ADDRESS);
ClientMessage msg = session.createMessage(true);
msg.getBodyBuffer().writeString(body);
producer.send(msg);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
ActiveMQServerControl jmxServer = ManagementControlHelper.createActiveMQServerControl(mbeanServer);
String[] preparedTransactions = jmxServer.listPreparedTransactions();
Assert.assertEquals(1, preparedTransactions.length);
System.out.println(preparedTransactions[0]);
Assert.assertEquals(0, jmxServer.listHeuristicCommittedTransactions().length);
Assert.assertEquals(0, jmxServer.listHeuristicRolledBackTransactions().length);
if (isCommit) {
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid));
} else {
jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));
}
Assert.assertEquals(0, jmxServer.listPreparedTransactions().length);
if (isCommit) {
Assert.assertEquals(1, jmxServer.listHeuristicCommittedTransactions().length);
Assert.assertEquals(0, jmxServer.listHeuristicRolledBackTransactions().length);
} else {
Assert.assertEquals(0, jmxServer.listHeuristicCommittedTransactions().length);
Assert.assertEquals(1, jmxServer.listHeuristicRolledBackTransactions().length);
}
if (isCommit) {
Assert.assertEquals(1, getMessageCount(((Queue) server.getPostOffice().getBinding(ADDRESS).getBindable())));
session = sf.createSession(false, false, false);
session.start();
ClientConsumer consumer = session.createConsumer(ADDRESS);
msg = consumer.receive(1000);
Assert.assertNotNull(msg);
msg.acknowledge();
Assert.assertEquals(body, msg.getBodyBuffer().readString());
session.commit();
session.close();
}
Assert.assertEquals(0, getMessageCount(((Queue) server.getPostOffice().getBinding(ADDRESS).getBindable())));
}
示例9: doHeuristicCompletionWithRestart
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
private void doHeuristicCompletionWithRestart(final boolean isCommit) throws Exception {
Configuration configuration = createDefaultInVMConfig().setJMXManagementEnabled(true);
ActiveMQServer server = createServer(true, configuration);
server.setMBeanServer(mbeanServer);
server.start();
Xid xid = newXID();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(true, false, false);
session.createQueue(ADDRESS, ADDRESS, true);
session.start(xid, XAResource.TMNOFLAGS);
ClientProducer producer = session.createProducer(ADDRESS);
ClientMessage msg = session.createMessage(true);
msg.getBodyBuffer().writeString(body);
producer.send(msg);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.close();
ActiveMQServerControl jmxServer = ManagementControlHelper.createActiveMQServerControl(mbeanServer);
String[] preparedTransactions = jmxServer.listPreparedTransactions();
Assert.assertEquals(1, preparedTransactions.length);
System.out.println(preparedTransactions[0]);
if (isCommit) {
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid));
} else {
jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));
}
preparedTransactions = jmxServer.listPreparedTransactions();
Assert.assertEquals(0, preparedTransactions.length);
if (isCommit) {
Assert.assertEquals(1, getMessageCount(((Queue) server.getPostOffice().getBinding(ADDRESS).getBindable())));
session = sf.createSession(false, false, false);
session.start();
ClientConsumer consumer = session.createConsumer(ADDRESS);
msg = consumer.receive(1000);
Assert.assertNotNull(msg);
msg.acknowledge();
Assert.assertEquals(body, msg.getBodyBuffer().readString());
session.commit();
session.close();
}
Assert.assertEquals(0, getMessageCount(((Queue) server.getPostOffice().getBinding(ADDRESS).getBindable())));
server.stop();
server.start();
jmxServer = ManagementControlHelper.createActiveMQServerControl(mbeanServer);
if (isCommit) {
String[] listHeuristicCommittedTransactions = jmxServer.listHeuristicCommittedTransactions();
Assert.assertEquals(1, listHeuristicCommittedTransactions.length);
System.out.println(listHeuristicCommittedTransactions[0]);
} else {
String[] listHeuristicRolledBackTransactions = jmxServer.listHeuristicRolledBackTransactions();
Assert.assertEquals(1, listHeuristicRolledBackTransactions.length);
System.out.println(listHeuristicRolledBackTransactions[0]);
}
}
示例10: doForgetHeuristicCompletedTxAndRestart
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
private void doForgetHeuristicCompletedTxAndRestart(final boolean heuristicCommit) throws Exception {
Configuration configuration = createDefaultInVMConfig().setJMXManagementEnabled(true);
ActiveMQServer server = createServer(true, configuration);
server.setMBeanServer(mbeanServer);
server.start();
Xid xid = newXID();
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(true, false, false);
session.createQueue(ADDRESS, ADDRESS, true);
session.start(xid, XAResource.TMNOFLAGS);
ClientProducer producer = session.createProducer(ADDRESS);
ClientMessage msg = session.createMessage(true);
msg.getBodyBuffer().writeBytes(new byte[123]);
producer.send(msg);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
ActiveMQServerControl jmxServer = ManagementControlHelper.createActiveMQServerControl(mbeanServer);
String[] preparedTransactions = jmxServer.listPreparedTransactions();
Assert.assertEquals(1, preparedTransactions.length);
System.out.println(preparedTransactions[0]);
if (heuristicCommit) {
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid));
} else {
jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));
}
preparedTransactions = jmxServer.listPreparedTransactions();
Assert.assertEquals(0, preparedTransactions.length);
session.forget(xid);
session.close();
if (heuristicCommit) {
Assert.assertEquals(0, jmxServer.listHeuristicCommittedTransactions().length);
} else {
Assert.assertEquals(0, jmxServer.listHeuristicRolledBackTransactions().length);
}
server.stop();
server.start();
// we need to recreate the sf
sf = createSessionFactory(locator);
session = sf.createSession(true, false, false);
Xid[] recoveredXids = session.recover(XAResource.TMSTARTRSCAN);
Assert.assertEquals(0, recoveredXids.length);
jmxServer = ManagementControlHelper.createActiveMQServerControl(mbeanServer);
if (heuristicCommit) {
Assert.assertEquals(0, jmxServer.listHeuristicCommittedTransactions().length);
} else {
Assert.assertEquals(0, jmxServer.listHeuristicRolledBackTransactions().length);
}
session.close();
}
示例11: testTimeoutOnFailoverTransactionRollback
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test(timeout = 120000)
public void testTimeoutOnFailoverTransactionRollback() throws Exception {
locator.setCallTimeout(2000).setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setAckBatchSize(0).setReconnectAttempts(300).setRetryInterval(100);
if (nodeManager instanceof InVMNodeManager) {
((InVMNodeManager) nodeManager).failoverPause = 5000L;
}
ClientSessionFactoryInternal sf1 = (ClientSessionFactoryInternal) createSessionFactory(locator);
final ClientSession session = createSession(sf1, true, false, false);
session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, true);
final ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS);
Xid xid = new XidImpl("uhuhuhu".getBytes(), 126512, "auhsduashd".getBytes());
session.start(xid, XAResource.TMNOFLAGS);
for (int i = 0; i < 500; i++) {
ClientMessage message = session.createMessage(true);
message.putIntProperty("counter", i);
producer.send(message);
}
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
crash(true, session);
try {
session.rollback(xid);
} catch (XAException e) {
try {
//there is still an edge condition that we must deal with
session.rollback(xid);
} catch (Exception ignored) {
log.trace(ignored.getMessage(), ignored);
}
}
ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS);
session.start();
ClientMessage m = consumer.receive(1000);
Assert.assertNull(m);
}
示例12: testXAMessagesNotSentSoNoRollbackOnCommit
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test(timeout = 120000)
public void testXAMessagesNotSentSoNoRollbackOnCommit() throws Exception {
createSessionFactory();
ClientSession session = createSession(sf, true, false, false);
Xid xid = new XidImpl("uhuhuhu".getBytes(), 126512, "auhsduashd".getBytes());
session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, true);
ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS);
session.start(xid, XAResource.TMNOFLAGS);
sendMessagesSomeDurable(session, producer);
session.end(xid, XAResource.TMSUCCESS);
session.prepare(xid);
session.commit(xid, false);
crash(session);
ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS);
session.start();
Xid xid2 = new XidImpl("tfytftyf".getBytes(), 54654, "iohiuohiuhgiu".getBytes());
session.start(xid2, XAResource.TMNOFLAGS);
receiveDurableMessages(consumer);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
}
示例13: testXAMessagesConsumedSoRollbackOnPrepare
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test(timeout = 120000)
public void testXAMessagesConsumedSoRollbackOnPrepare() throws Exception {
createSessionFactory();
ClientSession session1 = createSessionAndQueue();
ClientProducer producer = session1.createProducer(FailoverTestBase.ADDRESS);
sendMessagesSomeDurable(session1, producer);
session1.commit();
ClientSession session2 = createSession(sf, true, false, false);
ClientConsumer consumer = session2.createConsumer(FailoverTestBase.ADDRESS);
session2.start();
Xid xid = new XidImpl("uhuhuhu".getBytes(), 126512, "auhsduashd".getBytes());
session2.start(xid, XAResource.TMNOFLAGS);
receiveMessages(consumer);
session2.end(xid, XAResource.TMSUCCESS);
crash(session2);
try {
session2.prepare(xid);
Assert.fail("Should throw exception");
} catch (XAException e) {
Assert.assertEquals(XAException.XAER_RMFAIL, e.errorCode);
}
}
示例14: testXAMessagesSentSoRollbackOnPrepare
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test(timeout = 120000)
public void testXAMessagesSentSoRollbackOnPrepare() throws Exception {
createSessionFactory();
final ClientSession session = createSession(sf, true, false, false);
Xid xid = new XidImpl("uhuhuhu".getBytes(), 126512, "auhsduashd".getBytes());
session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, true);
final ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS);
session.start(xid, XAResource.TMNOFLAGS);
sendMessagesSomeDurable(session, producer);
session.end(xid, XAResource.TMSUCCESS);
crash(session);
try {
session.prepare(xid);
Assert.fail("Should throw exception");
} catch (XAException e) {
Assert.assertEquals(XAException.XAER_RMFAIL, e.errorCode);
// XXXX session.rollback();
}
ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS);
session.start();
ClientMessage message = consumer.receiveImmediate();
Assert.assertNull(message);
producer.close();
consumer.close();
}
示例15: testXADuplicateDetection1
import org.apache.activemq.artemis.api.core.client.ClientSession; //导入方法依赖的package包/类
@Test
public void testXADuplicateDetection1() throws Exception {
ClientSession session = sf.createSession(true, false, false);
Xid xid = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid, XAResource.TMNOFLAGS);
session.start();
final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue");
session.createQueue(queueName, queueName, null, false);
ClientProducer producer = session.createProducer(queueName);
ClientMessage message = createMessage(session, 0);
SimpleString dupID = new SimpleString("abcdefg");
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid, XAResource.TMSUCCESS);
session.close();
Xid xid2 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session = sf.createSession(true, false, false);
session.start(xid2, XAResource.TMNOFLAGS);
session.start();
producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
// Should be able to resend it and not get rejected since transaction didn't commit
message = createMessage(session, 1);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData());
producer.send(message);
session.end(xid2, XAResource.TMSUCCESS);
session.prepare(xid2);
session.commit(xid2, false);
Xid xid3 = new XidImpl("xa1".getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
session.start(xid3, XAResource.TMNOFLAGS);
message = consumer.receive(250);
Assert.assertEquals(1, message.getObjectProperty(propKey));
message = consumer.receiveImmediate();
Assert.assertNull(message);
DuplicateDetectionTest.log.info("ending session");
session.end(xid3, XAResource.TMSUCCESS);
DuplicateDetectionTest.log.info("preparing session");
session.prepare(xid3);
DuplicateDetectionTest.log.info("committing session");
session.commit(xid3, false);
}