public synchronized void setBlockOnAcknowledge(final boolean blockOnAcknowledge) { checkWrite(); serverLocator.setBlockOnAcknowledge(blockOnAcknowledge); }
public synchronized void setBlockOnAcknowledge(final boolean blockOnAcknowledge) { checkWrite(); serverLocator.setBlockOnAcknowledge(blockOnAcknowledge); }
public synchronized void setBlockOnAcknowledge(final boolean blockOnAcknowledge) { checkWrite(); serverLocator.setBlockOnAcknowledge(blockOnAcknowledge); }
public synchronized void setBlockOnAcknowledge(final boolean blockOnAcknowledge) { checkWrite(); serverLocator.setBlockOnAcknowledge(blockOnAcknowledge); }
public synchronized void setBlockOnAcknowledge(final boolean blockOnAcknowledge) { checkWrite(); serverLocator.setBlockOnAcknowledge(blockOnAcknowledge); }
@Override protected ServerLocator createLocator() { return super.createLocator().setConsumerWindowSize(0).setBlockOnAcknowledge(true).setBlockOnDurableSend(false).setBlockOnNonDurableSend(false); } }
@Override @Before public void setUp() throws Exception { super.setUp(); Configuration config = createDefaultInVMConfig().setJournalSyncNonTransactional(false).setJournalSyncTransactional(false); server = createServer(true, config, PAGE_SIZE, PAGE_MAX, new HashMap<String, AddressSettings>()); server.start(); locator = createNonHALocator(false).setBlockOnDurableSend(false).setBlockOnAcknowledge(true); }
private void doConsumerReceiveImmediateWithNoMessages(final boolean browser) throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnAcknowledge(true).setAckBatchSize(0); sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, false); session.createQueue(ADDRESS, QUEUE, null, false); ClientConsumer consumer = session.createConsumer(QUEUE, null, browser); session.start(); ClientMessage message = consumer.receiveImmediate(); Assert.assertNull(message); session.close(); }
@Override @Before public void setUp() throws Exception { super.setUp(); server = addServer(ActiveMQServers.newActiveMQServer(createDefaultInVMConfig(), false)); server.start(); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true); ClientSessionFactory sessionFactory = createSessionFactory(locator); // There are assertions over sizes that needs to be done after the ACK // was received on server clientSession = addClientSession(sessionFactory.createSession(null, null, false, true, true, false, 0)); } }
@Test public void testConsumerReceiveImmediateWithSessionStop() throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnAcknowledge(true).setAckBatchSize(0); sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(ADDRESS, QUEUE, null, false); ClientConsumer consumer = session.createConsumer(QUEUE, null, false); session.start(); session.stop(); Assert.assertNull(consumer.receiveImmediate()); session.start(); long start = System.currentTimeMillis(); ClientMessage msg = consumer.receive(2000); long end = System.currentTimeMillis(); Assert.assertNull(msg); // we waited for at least 2000ms Assert.assertTrue("waited only " + (end - start), end - start >= 2000); consumer.close(); session.close(); }
@Test(timeout = 120000) public void testFailoverWithHostAlias() throws Exception { Map<String, Object> params = new HashMap<>(); params.put(TransportConstants.HOST_PROP_NAME, "127.0.0.1"); TransportConfiguration tc = createTransportConfiguration(true, false, params); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithHA(tc)).setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true).setReconnectAttempts(15); ClientSessionFactoryInternal sf = createSessionFactoryAndWaitForTopology(locator, 2); ClientSession session = createSession(sf, true, true, 0); session.createQueue(ADDRESS, ADDRESS, null, true); ClientProducer producer = session.createProducer(ADDRESS); final int numMessages = 10; ClientConsumer consumer = session.createConsumer(ADDRESS); session.start(); crash(session); sendMessages(session, producer, numMessages); receiveMessages(consumer, 0, numMessages, true); session.close(); sf.close(); Assert.assertEquals(0, sf.numSessions()); Assert.assertEquals(0, sf.numConnections()); }
private void doSimpleSendAfterFailover(final boolean durable, final boolean temporary) throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true).setReconnectAttempts(300).setRetryInterval(100); sf = createSessionFactoryAndWaitForTopology(locator, 2); ClientSession session = createSession(sf, true, true, 0); if (temporary) { session.createTemporaryQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null); } else { session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, durable); } ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS); session.start(); crash(session); sendMessagesSomeDurable(session, producer); receiveMessages(consumer); }
@Override @Before public void setUp() throws Exception { super.setUp(); configuration = createDefaultInVMConfig(); server = createServer(true, configuration); server.start(); qs = new AddressSettings().setDefaultLastValueQueue(true); server.getAddressSettingsRepository().addMatch(address.toString(), qs); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSessionXa = sessionFactory.createSession(true, false, false); clientSession.createQueue(address, qName1, null, true); }
private void restartServer() throws Exception { server.stop(); server = null; server = createServer(true, configuration); server.getAddressSettingsRepository().addMatch(address.toString(), qs); // start the server server.start(); server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setDefaultLastValueQueue(true)); // then we create a client as normal locator.close(); locator = createInVMNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSessionXa = sessionFactory.createSession(true, false, false); } }
@Test(timeout = 120000) public void testFailThenReceiveMoreMessagesAfterFailover2() throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true).setReconnectAttempts(300).setRetryInterval(100); sf = createSessionFactoryAndWaitForTopology(locator, 2); ClientSession session = createSession(sf, true, true, 0); session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, true); ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); sendMessagesSomeDurable(session, producer); ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS); session.start(); receiveMessages(consumer); crash(session); // Send some more for (int i = NUM_MESSAGES; i < NUM_MESSAGES * 2; i++) { producer.send(createMessage(session, i, isDurable(i))); } receiveMessages(consumer, NUM_MESSAGES, NUM_MESSAGES * 2, true); }
@Override @Before public void setUp() throws Exception { super.setUp(); server = addServer(ActiveMQServers.newActiveMQServer(createDefaultNettyConfig(), true)); // start the server server.start(); server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setDefaultLastValueQueue(true)); // then we create a client as normalServer ServerLocator locator = createNettyNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sf = createSessionFactory(locator); clientSession = addClientSession(sf.createSession(false, true, true)); clientSessionTxReceives = addClientSession(sf.createSession(false, true, false)); clientSessionTxSends = addClientSession(sf.createSession(false, false, true)); clientSession.createQueue(address, qName1, null, true); } }
@Override @Before public void setUp() throws Exception { super.setUp(); ConfigurationImpl configuration = (ConfigurationImpl) createDefaultInVMConfig().setMessageExpiryScanPeriod(1000); server = addServer(ActiveMQServers.newActiveMQServer(configuration, false)); // start the server server.start(); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSession.createQueue(qName, RoutingType.MULTICAST, qName, null, false); expiryAddress = new SimpleString("EA"); expiryQueue = new SimpleString("expiryQ"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(expiryAddress); server.getAddressSettingsRepository().addMatch(qName.toString(), addressSettings); server.getAddressSettingsRepository().addMatch(qName2.toString(), addressSettings); clientSession.createQueue(expiryAddress, RoutingType.MULTICAST, expiryQueue, null, false); }
@Test public void testRollbackOnSend() throws Exception { clearDataRecreateServerDirs(); Configuration config = createDefaultInVMConfig(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); server.start(); final int numberOfIntegers = 256; final int numberOfMessages = 10; locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true); sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, false, true, false, 0); session.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true); ClientProducer producer = session.createProducer(PagingTest.ADDRESS); ClientMessage message = null; for (int i = 0; i < numberOfMessages; i++) { message = session.createMessage(true); ActiveMQBuffer bodyLocal = message.getBodyBuffer(); for (int j = 1; j <= numberOfIntegers; j++) { bodyLocal.writeInt(j); } message.putIntProperty(new SimpleString("id"), i); producer.send(message); } session.rollback(); ClientConsumer consumer = session.createConsumer(PagingTest.ADDRESS); session.start(); Assert.assertNull(consumer.receiveImmediate()); session.close(); }
@Test public void testReceiveAckLastMessageOnly() throws Exception { ActiveMQServer server = createServer(false); server.start(); ServerLocator locator = createInVMNonHALocator().setAckBatchSize(0).setBlockOnAcknowledge(true); ClientSessionFactory cf = createSessionFactory(locator); ClientSession sendSession = cf.createSession(false, true, true); ClientSession session = cf.createSession(false, true, true); sendSession.createQueue(addressA, queueA, false); ClientProducer cp = sendSession.createProducer(addressA); ClientConsumer cc = session.createConsumer(queueA); int numMessages = 100; for (int i = 0; i < numMessages; i++) { cp.send(sendSession.createMessage(false)); } session.start(); ClientMessage cm = null; for (int i = 0; i < numMessages; i++) { cm = cc.receive(5000); Assert.assertNotNull(cm); } cm.acknowledge(); Queue q = (Queue) server.getPostOffice().getBinding(queueA).getBindable(); Assert.assertEquals(0, q.getDeliveringCount()); session.close(); sendSession.close(); }
private void doConsumerReceiveImmediate(final boolean browser) throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnAcknowledge(true).setAckBatchSize(0); sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(ADDRESS, QUEUE, null, false); ClientProducer producer = session.createProducer(ADDRESS); final int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(session, "m" + i); producer.send(message); } ClientConsumer consumer = session.createConsumer(QUEUE, null, browser); session.start(); for (int i = 0; i < numMessages; i++) { ClientMessage message2 = consumer.receiveImmediate(); Assert.assertNotNull("did not receive message " + i, message2); Assert.assertEquals("m" + i, message2.getBodyBuffer().readString()); if (!browser) { message2.acknowledge(); } } Assert.assertEquals(0, ((Queue) server.getPostOffice().getBinding(QUEUE).getBindable()).getDeliveringCount()); Assert.assertNull(consumer.receiveImmediate()); Assert.assertEquals(0, ((Queue) server.getPostOffice().getBinding(QUEUE).getBindable()).getDeliveringCount()); int messagesOnServer = browser ? numMessages : 0; Assert.assertEquals(messagesOnServer, getMessageCount(((Queue) server.getPostOffice().getBinding(QUEUE).getBindable()))); consumer.close(); session.close(); }