protected void assertNoMoreMessages() throws ActiveMQException { session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS); ClientMessage msg = consumer.receiveImmediate(); assertNull("there should be no more messages to receive! " + msg, msg); consumer.close(); session.commit(); }
private ClientMessage receiveMessage() throws Exception { final ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, true, true, false, 0); session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS); ClientMessage message = consumer.receive(1000); session.commit(); if (message != null) { message.acknowledge(); } consumer.close(); session.close(); return message; }
/** * @throws ActiveMQException */ private void sendMessages(int msgs) throws ActiveMQException { ClientProducer producer = prodSession.createProducer(ADDRESS); for (int i = 0; i < msgs; i++) { ClientMessage message = prodSession.createMessage(true); message.putIntProperty("prodNR", i % nThreads); producer.send(message); if (i % 100 == 0) { prodSession.commit(); } } prodSession.commit(); producer.close(); } }
@Test public void testSendDeliveryOrderOnCommit() throws Exception { ClientSession sendSession = cf.createSession(false, false, true); ClientProducer cp = sendSession.createProducer(addressA); int numMessages = 1000; sendSession.createQueue(addressA, queueA, false); for (int i = 0; i < numMessages; i++) { ClientMessage cm = sendSession.createMessage(false); cm.getBodyBuffer().writeInt(i); cp.send(cm); if (i % 10 == 0) { sendSession.commit(); } sendSession.commit(); } ClientConsumer c = sendSession.createConsumer(queueA); sendSession.start(); for (int i = 0; i < numMessages; i++) { ClientMessage cm = c.receive(5000); Assert.assertNotNull(cm); Assert.assertEquals(i, cm.getBodyBuffer().readInt()); } sendSession.close(); }
@Override public void onMessage(final ClientMessage msg) { try { ServerLocator locatorSendx = createFactory(isNetty()).setReconnectAttempts(15); ClientSessionFactory factoryx = locatorSendx.createSessionFactory(); ClientSession sessionSend = factoryx.createSession(true, true); sessions.add(sessionSend); sessions.add(locatorSendx); sessions.add(factoryx); final ClientProducer prod = sessionSend.createProducer(QUEUE_RESPONSE); sessionSend.start(); sessions.add(prod); msg.acknowledge(); prod.send(sessionSend.createMessage(true)); prod.close(); sessionSend.commit(); sessionSend.close(); factoryx.close(); if (Thread.currentThread().isInterrupted()) { System.err.println("Netty has interrupted a thread!!!"); errors.incrementAndGet(); } } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } finally { latchReceive.countDown(); } } });
@Test public void testSimpleRedistribution() throws Exception { commonTestCode(); for (int i = 0; i < 100; i++) { ClientMessage msg = consThree.receive(15000); Assert.assertNotNull(msg); // System.out.println(i + " msg = " + msg); int received = msg.getIntProperty("key"); if (i != received) { // Shouldn't this be a failure? System.out.println(i + "!=" + received); } msg.acknowledge(); } sessionThree.commit(); sessionOne.start(); ClientConsumer consOne = sessionOne.createConsumer(ReplicatedDistributionTest.ADDRESS); Assert.assertNull(consOne.receiveImmediate()); }
protected void receiveMsgsInRange(int start, int end) throws ActiveMQException { session.start(); ClientConsumer consumer = addClientConsumer(session.createConsumer(ADDRESS)); receiveMessages(consumer, start, end, true); consumer.close(); session.commit(); }
@Test public void testReceiveImmediateWithZeroWindow() throws Exception { ActiveMQServer server = createServer(false, isNetty()); ClientSession session = sf.createSession(false, false, false); session.createQueue("testWindow", "testWindow", true); session.close(); ClientSession senderSession = sf.createSession(false, false); ClientProducer producer = senderSession.createProducer("testWindow"); producer.send(sent); senderSession.commit(); senderSession.start(); ClientMessage received = consumer.receive(1000); Assert.assertNotNull(received); tmpSess.close(); senderSession.close();
public void sendMessages(final int start, final int end) throws Exception { try (ClientSession session = factory.createSession(false, false)) { try { session.createQueue(QUEUE, QUEUE, true); } catch (Exception ignored) { } ClientProducer prod = session.createProducer(QUEUE); for (int i = start; i < end; i++) { ClientMessage msg = session.createMessage(true); msg.putIntProperty(new SimpleString("key"), i); msg.getBodyBuffer().writeUTF("message " + i); prod.send(msg); } session.commit(); session.close(); // server.stop(); -- this test was not supposed to stop the server, it should crash } }
private void receiveAllMessages() throws Exception { final ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, true, true, false, 0); session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS); for (int i = 0; i < numMsgs; i++) { ClientMessage message = consumer.receive(2000); assertNotNull(message); message.acknowledge(); } session.commit(); session.close(); }
@Override public void run() { try { ClientSession session = sf.createSession(false, false); ClientConsumer consumer = session.createConsumer("testWindow"); session.start(); latchStart.await(10, TimeUnit.SECONDS); while (true) { ClientMessage msg = consumer.receiveImmediate(); if (msg == null) { break; } msg.acknowledge(); session.commit(); received.incrementAndGet(); } } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } } };
public List<String> sendMessageBatch(int batchSize, ClientSession session, SimpleString queueAddr) throws ActiveMQException { List<String> messageIds = new ArrayList<>(); ClientProducer producer = session.createProducer(queueAddr); for (int i = 0; i < batchSize; i++) { ClientMessage message = session.createMessage(true); message.getBodyBuffer().writeBytes(new byte[1024]); String id = UUID.randomUUID().toString(); message.putStringProperty("id", id); message.putIntProperty("seq", i); // this is to make the print-data easier to debug messageIds.add(id); producer.send(message); } session.commit(); return messageIds; }
@Test public void testReceiveImmediateWithZeroWindow3() throws Exception { ActiveMQServer server = createServer(false, isNetty()); ClientSession session = sf.createSession(false, false, false); session.createQueue("testWindow", "testWindow", true); session.close(); ClientSession senderSession = sf.createSession(false, false); ClientProducer producer = senderSession.createProducer("testWindow"); producer.send(sent); senderSession.commit(); senderSession.start(); ClientMessage received = consumer.receive(1000); Assert.assertNotNull(received); tmpSess.close(); senderSession.close();
@Test public void testCommitWithSend() throws Exception { cf = createSessionFactory(locator); ClientSession clientSession = cf.createSession(false, false, true); clientSession.createQueue(queueName, queueName, false); ClientProducer cp = clientSession.createProducer(queueName); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString(queueName)).getBindable(); Assert.assertEquals(0, getMessageCount(q)); clientSession.commit(); Assert.assertTrue(Wait.waitFor(() -> getMessageCount(q) == 10, 2000, 100)); clientSession.close(); }
private void receiveOnBothNodes(int NUMBER_OF_MESSAGES) throws ActiveMQException { for (int x = 0; x <= 1; x++) { ClientSession sessionX = sfs[x].createSession(); ClientConsumer consumerX = sessionX.createConsumer("queues.0"); sessionX.start(); for (int i = 0; i < NUMBER_OF_MESSAGES / 2; i++) { ClientMessage msg = consumerX.receive(5000); Assert.assertNotNull(msg); msg.acknowledge(); } Assert.assertNull(consumerX.receiveImmediate()); sessionX.commit(); sessionX.close(); } }
private void commonTestCode() throws Exception { waitForBindings(3, "test.SomeAddress", 1, 1, true); waitForBindings(1, "test.SomeAddress", 1, 1, false); producer = sessionOne.createProducer(ReplicatedDistributionTest.ADDRESS); for (int i = 0; i < 100; i++) { ClientMessage msg = sessionOne.createMessage(true); msg.putIntProperty(new SimpleString("key"), i); producer.send(msg); } sessionOne.commit(); }
@Test public void testXAInterleaveResourceSuspendWorkCommit() throws Exception { Xid xid = newXID(); Xid xid2 = newXID(); ClientProducer clientProducer = clientSession.createProducer(atestq); ClientSession recSession = sessionFactory.createSession(); recSession.start(); ClientConsumer clientConsumer = recSession.createConsumer(atestq); ClientMessage m1 = createTextMessage(clientSession, "m1"); ClientMessage m2 = createTextMessage(clientSession, "m2"); clientSession.start(xid, XAResource.TMNOFLAGS); clientProducer.send(m1); clientSession.end(xid, XAResource.TMSUSPEND); clientSession.start(xid2, XAResource.TMNOFLAGS); clientProducer.send(m2); clientSession.end(xid, XAResource.TMSUCCESS); clientSession.commit(xid, true); ClientMessage message = clientConsumer.receiveImmediate(); assertNotNull(message); message = clientConsumer.receiveImmediate(); assertNull(message); clientSession.end(xid2, XAResource.TMSUCCESS); clientSession.commit(xid2, true); message = clientConsumer.receiveImmediate(); assertNotNull(message); }
@Test public void testRollbackWithSend() throws Exception { cf = createSessionFactory(locator); ClientSession clientSession = cf.createSession(false, false, true); clientSession.createQueue(queueName, queueName, false); ClientProducer cp = clientSession.createProducer(queueName); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString(queueName)).getBindable(); Assert.assertEquals(0, getMessageCount(q)); clientSession.rollback(); cp.send(clientSession.createMessage(false)); cp.send(clientSession.createMessage(false)); clientSession.commit(); Assert.assertEquals(2, getMessageCount(q)); clientSession.close(); }
@Override public void run() { try { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, false); session.start(); ClientConsumer cons = session.createConsumer(atestq); for (int i = 0; i < 100; i++) { ClientMessage msg = cons.receive(100000); assertNotNull(msg); count.incrementAndGet(); msg.acknowledge(); session.commit(); } session.close(); sf.close(); } catch (Throwable e) { e.printStackTrace(); count.set(-1); } } };
/** * @param numberOfMessages * @param session * @throws Exception */ private void sendMessages(int numberOfMessages, ClientSession session) throws Exception { ClientProducer producer = session.createProducer(inQueue); for (int i = 0; i < numberOfMessages; i++) { ActiveMQTextMessage txt = new ActiveMQTextMessage(session); txt.setIntProperty("msg", i); txt.setText("Message Number (" + i + ")"); txt.doBeforeSend(); producer.send(txt.getCoreMessage()); } session.commit(); }