当前位置: 首页>>代码示例>>Java>>正文


Java ClientSession.prepare方法代码示例

本文整理汇总了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();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:14,代码来源:NIOMultiThreadCompactorStressTest.java

示例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();

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:70,代码来源:BasicXaTest.java

示例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");
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:70,代码来源:BasicXaRecoveryTest.java

示例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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:48,代码来源:BasicXaRecoveryTest.java

示例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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:60,代码来源:BasicXaRecoveryTest.java

示例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.*"));
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:45,代码来源:ActiveMQServerControlTest.java

示例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();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:47,代码来源:LargeMessageTest.java

示例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())));
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:75,代码来源:HeuristicXATest.java

示例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]);
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:80,代码来源:HeuristicXATest.java

示例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();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:72,代码来源:HeuristicXATest.java

示例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);

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:50,代码来源:FailoverTest.java

示例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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:41,代码来源:FailoverTest.java

示例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);
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:37,代码来源:FailoverTest.java

示例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();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:41,代码来源:FailoverTest.java

示例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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:69,代码来源:DuplicateDetectionTest.java


注:本文中的org.apache.activemq.artemis.api.core.client.ClientSession.prepare方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。