public synchronized void setConsumerWindowSize(final int consumerWindowSize) { checkWrite(); serverLocator.setConsumerWindowSize(consumerWindowSize); }
public synchronized void setConsumerWindowSize(final int consumerWindowSize) { checkWrite(); serverLocator.setConsumerWindowSize(consumerWindowSize); }
public synchronized void setConsumerWindowSize(final int consumerWindowSize) { checkWrite(); serverLocator.setConsumerWindowSize(consumerWindowSize); }
public synchronized void setConsumerWindowSize(final int consumerWindowSize) { checkWrite(); serverLocator.setConsumerWindowSize(consumerWindowSize); }
public synchronized void setConsumerWindowSize(final int consumerWindowSize) { checkWrite(); serverLocator.setConsumerWindowSize(consumerWindowSize); }
@Override protected void setSessionFactoryCreateLocator(int node, boolean ha, TransportConfiguration serverTotc) { super.setSessionFactoryCreateLocator(node, ha, serverTotc); locators[node].setConsumerWindowSize(0); }
@Override protected ServerLocator createLocator() { return super.createLocator().setConsumerWindowSize(0).setBlockOnAcknowledge(true).setBlockOnDurableSend(false).setBlockOnNonDurableSend(false); } }
@Test public void testCloseSessionFactory() throws Exception { ServerLocator locator = createInVMNonHALocator().setReconnectAttempts(-1).setConnectionTTL(1000).setClientFailureCheckPeriod(100).setConsumerWindowSize(10 * 1024 * 1024).setCallTimeout(1000); ClientSessionFactory sf = locator.createSessionFactory(); final CountDownLatch latch = new CountDownLatch(1); sf.addFailoverListener(eventType -> { if (eventType == FailoverEventType.FAILURE_DETECTED) { try { /** * We close client session factory during this period and * expect reconnection stopped without exception which notifies * FAILOVER_FAILED event. See ARTEMIS-1949. */ Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } else if (eventType == FailoverEventType.FAILOVER_FAILED) { latch.countDown(); } }); server.stop(); Thread.sleep(600); sf.close(); assertTrue(latch.await(1000, TimeUnit.MILLISECONDS)); } }
@Override @Before public void setUp() throws Exception { super.setUp(); Configuration conf = createDefaultInVMConfig().setJMXManagementEnabled(true); server = addServer(ActiveMQServers.newActiveMQServer(conf, mbeanServer, false)); server.start(); locator = createInVMNonHALocator().setBlockOnNonDurableSend(true).setConsumerWindowSize(0); ClientSessionFactory sf = createSessionFactory(locator); session = sf.createSession(false, true, false); session.start(); }
@Test public void testBrowseWithZeroConsumerWindowSize() throws Exception { locator.setConsumerWindowSize(0); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(QUEUE, QUEUE, null, false); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; byte[] bytes = new byte[240]; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); message.putIntProperty("foo", i); producer.send(message); } //Create a normal non browsing consumer session.createConsumer(QUEUE); session.start(); ClientConsumer browser = session.createConsumer(QUEUE, true); for (int i = 0; i < numMessages; i++) { ClientMessage message2 = browser.receive(1000); assertEquals(i, message2.getIntProperty("foo").intValue()); } session.close(); }
@Test public void testOrder1() throws Throwable { boolean persistentMessages = true; Configuration config = createDefaultInVMConfig().setJournalSyncNonTransactional(false); ActiveMQServer server = createServer(true, config, PAGE_SIZE, PAGE_MAX, new HashMap<String, AddressSettings>()); server.start(); final int messageSize = 1024; final int numberOfMessages = 500; ServerLocator locator = createInVMNonHALocator().setClientFailureCheckPeriod(1000).setConnectionTTL(2000).setReconnectAttempts(0).setBlockOnNonDurableSend(false).setBlockOnDurableSend(false).setBlockOnAcknowledge(false).setConsumerWindowSize(1024 * 1024); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, false, false); server.addAddressInfo(new AddressInfo(ADDRESS, RoutingType.ANYCAST)); server.createQueue(ADDRESS, RoutingType.ANYCAST, ADDRESS, null, true, false); ClientProducer producer = session.createProducer(PagingTest.ADDRESS); byte[] body = new byte[messageSize]; ByteBuffer bb = ByteBuffer.wrap(body); for (int j = 1; j <= messageSize; j++) { bb.put(getSamplebyte(j)); } for (int i = 0; i < numberOfMessages; i++) { ClientMessage message = session.createMessage(persistentMessages); ActiveMQBuffer bodyLocal = message.getBodyBuffer(); bodyLocal.writeBytes(body); message.putIntProperty(new SimpleString("id"), i); producer.send(message); } session.commit(); session.close(); }
@Test public void testConsumeWithNoConsumerFlowControl() throws Exception { ServerLocator locator = createInVMNonHALocator(); locator.setConsumerWindowSize(-1); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.start(); ClientProducer producer = session.createProducer(QUEUE); 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); for (int i = 0; i < numMessages; i++) { ClientMessage message = consumer.receive(10000); assertNotNull(message); message.acknowledge(); } session.close(); sf.close(); locator.close(); }
@Override @Before public void setUp() throws Exception { super.setUp(); Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true); server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, true)); AddressSettings defaultSetting = new AddressSettings().setPageSizeBytes(5120).setMaxSizeBytes(10240).setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE); server.getAddressSettingsRepository().addMatch("#", defaultSetting); server.start(); locator = createInVMNonHALocator().setBlockOnNonDurableSend(false).setConsumerWindowSize(0); ClientSessionFactory sf = createSessionFactory(locator); session1 = sf.createSession(false, true, false); session1.start(); session2 = sf.createSession(false, true, false); session2.start(); }
@Test public void testConsumerCreditsOnRollback() throws Exception { locator.setConsumerWindowSize(10000); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createTransactedSession(); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; final byte[] bytes = new byte[1000]; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); message.putIntProperty("count", i); producer.send(message); } session.commit(); ClientConsumer consumer = session.createConsumer(QUEUE); session.start(); for (int i = 0; i < 110; i++) { ClientMessage message = consumer.receive(); int count = message.getIntProperty("count"); boolean redelivered = message.getDeliveryCount() > 1; if (count % 2 == 0 && !redelivered) { session.rollback(); } else { session.commit(); } } session.close(); }
@Test public void testFlowControlMessageNotRouted() throws Exception { final SimpleString address = new SimpleString("testaddress"); server = createServer(false, isNetty()); AddressSettings addressSettings = new AddressSettings().setMaxSizeBytes(1024).setAddressFullMessagePolicy(AddressFullMessagePolicy.BLOCK); HierarchicalRepository<AddressSettings> repos = server.getAddressSettingsRepository(); repos.addMatch(address.toString(), addressSettings); server.start(); waitForServerToStart(server); locator.setProducerWindowSize(1024).setConsumerWindowSize(1024).setAckBatchSize(1024); sf = createSessionFactory(locator); session = sf.createSession(false, true, true, true); ClientProducer producer = session.createProducer(address); byte[] bytes = new byte[100]; final int numMessages = 1000; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); producer.send(message); } }
@Test public void testConsumerCreditsOnRollbackLargeMessages() throws Exception { locator.setConsumerWindowSize(10000).setMinLargeMessageSize(1000); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createTransactedSession(); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; final byte[] bytes = new byte[10000]; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); message.putIntProperty("count", i); producer.send(message); } session.commit(); ClientConsumer consumer = session.createConsumer(QUEUE); session.start(); for (int i = 0; i < 110; i++) { ClientMessage message = consumer.receive(); int count = message.getIntProperty("count"); boolean redelivered = message.getDeliveryCount() > 1; if (count % 2 == 0 && !redelivered) { session.rollback(); } else { session.commit(); } } session.close(); }
server.start(); locator.setConsumerWindowSize(0);
@Test public void testReceiveImmediate() throws Exception { // forces perfect round robin locator.setConsumerWindowSize(0); ClientSessionFactory cf = createSessionFactory(locator); ClientSession sendSession = cf.createSession(false, true, true); ClientProducer cp = sendSession.createProducer(addressA); ClientSession session = cf.createSession(false, true, true); session.createQueue(addressA, RoutingType.ANYCAST, queueA, false); ClientConsumer cc = session.createConsumer(queueA); ClientConsumer cc2 = session.createConsumer(queueA); session.start(); cp.send(sendSession.createMessage(false)); cp.send(sendSession.createMessage(false)); cp.send(sendSession.createMessage(false)); sendSession.commit(); final Queue queue = server.locateQueue(queueA); Wait.waitFor(() -> queue.getMessageCount() == 3, 500, 100); Assert.assertNotNull(cc2.receiveImmediate()); Assert.assertNotNull(cc.receiveImmediate()); if (cc.receiveImmediate() == null) { Assert.assertNotNull(cc2.receiveImmediate()); } session.close(); sendSession.close(); } }