@Override public void run() throws ActiveMQException { producer.send(session.createMessage(false)); } });
@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 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 testSendWithoutXID() throws Exception { // Since both resources have same RM, TM will probably use 1PC optimization ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory factory = createSessionFactory(locator); ClientSession session = addClientSession(factory.createSession(true, false, false)); session.createQueue("Test", RoutingType.ANYCAST, "Test"); ClientProducer prod = session.createProducer("Test"); prod.send(session.createMessage(true)); session.start(); ClientConsumer cons = session.createConsumer("Test"); assertNotNull("Send went through an invalid XA Session", cons.receiveImmediate()); }
@Override public void onMessage(final ClientMessage request) { try { ClientMessage reply = session.createMessage(false); SimpleString replyTo = (SimpleString) request.getObjectProperty(ClientMessageImpl.REPLYTO_HEADER_NAME); long value = (Long) request.getObjectProperty(key); reply.putLongProperty(key, value); ClientProducer replyProducer = session.createProducer(replyTo); replyProducer.send(reply); request.acknowledge(); } catch (ActiveMQException e) { e.printStackTrace(); } } }
@Override public void run() { for (int i = 0; i < 5000; i++) { try { producer.send(session.createMessage(true).putIntProperty("myid", i)); } catch (Exception e) { e.printStackTrace(); break; } } } };
@Test public void testSendReceiveOne() throws Exception { ClientSessionFactory sf = createSessionFactory(); ClientSession session = sf.createSession(); final String foo = "foo"; session.createQueue(foo, RoutingType.ANYCAST, foo); ClientProducer prod = session.createProducer(foo); ClientConsumer cons = session.createConsumer(foo); session.start(); ClientMessage msg = session.createMessage(false); prod.send(msg); msg = cons.receive(10000); Assert.assertNotNull(msg); msg.acknowledge(); } }
@Override public void run() { ClientMessage msg = session.createMessage(false); for (int i = 0; i < numMessages; i++) { try { producer.send(msg); } catch (Exception e) { log.error("Caught exception", e); } //log.info(id + " sent message " + i); } }
@Test public void testBasicReceive() throws Exception { 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, queueA, false); ClientConsumer cc = session.createConsumer(queueA); session.start(); cp.send(sendSession.createMessage(false)); Assert.assertNotNull(cc.receive()); session.close(); sendSession.close(); }
private void sendMessages(final ClientSession sessSend, final ClientProducer producer, final int numMessages, final int threadNum) throws Exception { for (int i = 0; i < numMessages; i++) { ClientMessage message = sessSend.createMessage(ActiveMQBytesMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1); message.putIntProperty(new SimpleString("threadnum"), threadNum); message.putIntProperty(new SimpleString("count"), i); setBody(message); producer.send(message); } }
protected void doTestJ(final ClientSessionFactory sf) throws Exception { ClientSession sessCreate = sf.createSession(false, true, true); sessCreate.createQueue(RandomReattachTest.ADDRESS, RandomReattachTest.ADDRESS, null, false); ClientSession sess = sf.createSession(false, true, true); sess.start(); ClientConsumer consumer = sess.createConsumer(RandomReattachTest.ADDRESS); ClientProducer producer = sess.createProducer(RandomReattachTest.ADDRESS); ClientMessage message = sess.createMessage(ActiveMQTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1); producer.send(message); ClientMessage message2 = consumer.receive(RandomReattachTest.RECEIVE_TIMEOUT); Assert.assertNotNull(message2); message2.acknowledge(); sess.close(); sessCreate.deleteQueue(RandomReattachTest.ADDRESS); sessCreate.close(); }
private void checkUserSendNoReceive(final String queue, final ClientSession connection) throws Exception { ClientProducer prod = connection.createProducer(queue); ClientMessage m = connection.createMessage(false); prod.send(m); try { connection.createConsumer(queue); Assert.fail("should throw exception"); } catch (ActiveMQSecurityException se) { //ok } catch (ActiveMQException e) { fail("Invalid Exception type:" + e.getType()); } } }
protected void doTestI(final ClientSessionFactory sf) throws Exception { ClientSession sessCreate = sf.createSession(false, true, true); sessCreate.createQueue(RandomReattachTest.ADDRESS, RandomReattachTest.ADDRESS, null, false); ClientSession sess = sf.createSession(false, true, true); sess.start(); ClientConsumer consumer = sess.createConsumer(RandomReattachTest.ADDRESS); ClientProducer producer = sess.createProducer(RandomReattachTest.ADDRESS); ClientMessage message = sess.createMessage(ActiveMQTextMessage.TYPE, false, 0, System.currentTimeMillis(), (byte) 1); producer.send(message); ClientMessage message2 = consumer.receive(RandomReattachTest.RECEIVE_TIMEOUT); Assert.assertNotNull(message2); message2.acknowledge(); sess.close(); sessCreate.deleteQueue(RandomReattachTest.ADDRESS); sessCreate.close(); }
public void verifySendAcknowledgementsProducerOnly(int windowSize) throws Exception { ServerLocator locator = createInVMNonHALocator(); locator.setConfirmationWindowSize(windowSize); ClientSessionFactory csf = createSessionFactory(locator); ClientSession session = csf.createSession(null, null, false, true, true, false, 1); session.createQueue(address, queueName, false); ClientProducer prod = session.createProducer(address); final int numMessages = 1000; LatchAckHandler producerHandler = new LatchAckHandler("producer", new CountDownLatch(numMessages)); for (int i = 0; i < numMessages; i++) { ClientMessage msg2 = session.createMessage(false); prod.send(address, msg2, producerHandler); } Assert.assertTrue("producer specific handler must have acked, " + producerHandler, producerHandler.latch.await(5, TimeUnit.SECONDS)); }
@Test public void testNonDurableMessageOnNonDurableQueue() throws Exception { boolean durable = true; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, queue, !durable); ClientProducer producer = session.createProducer(address); producer.send(session.createMessage(!durable)); restart(); session.start(); try { session.createConsumer(queue); } catch (ActiveMQNonExistentQueueException neqe) { //ok } catch (ActiveMQException e) { fail("Invalid Exception type:" + e.getType()); } }
private void checkUserSendAndReceive(final String genericQueueName, final ClientSession connection) throws Exception { connection.start(); try { ClientProducer prod = connection.createProducer(genericQueueName); ClientConsumer con = connection.createConsumer(genericQueueName); ClientMessage m = connection.createMessage(false); prod.send(m); ClientMessage rec = con.receive(1000); Assert.assertNotNull(rec); rec.acknowledge(); } finally { connection.stop(); } }
@Test public void testConsumeRate2() throws Exception { ActiveMQServer server = createServer(false); server.start(); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(ADDRESS, ADDRESS, true); ClientProducer producer = session.createProducer(ADDRESS); for (int i = 0; i < 12; i++) { producer.send(session.createMessage(false)); } session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS, null, 1024 * 1024, 10, false); long start = System.currentTimeMillis(); for (int i = 0; i < 12; i++) { consumer.receive(1000); } long end = System.currentTimeMillis(); Assert.assertTrue("TotalTime = " + (end - start), end - start >= 1000); session.close(); }
public void verifySendAcknowledgements(int windowSize) throws Exception { ServerLocator locator = createInVMNonHALocator(); locator.setConfirmationWindowSize(windowSize); ClientSessionFactory csf = createSessionFactory(locator); ClientSession session = csf.createSession(null, null, false, true, true, false, 1); session.createQueue(address, queueName, false); ClientProducer prod = session.createProducer(address); final int numMessages = 1000; LatchAckHandler handler = new LatchAckHandler("session", new CountDownLatch(numMessages)); LatchAckHandler producerHandler = new LatchAckHandler("producer", new CountDownLatch(numMessages)); session.setSendAcknowledgementHandler(handler); for (int i = 0; i < numMessages; i++) { ClientMessage msg = session.createMessage(false); ClientMessage msg2 = session.createMessage(false); prod.send(msg); prod.send(address, msg2, producerHandler); } Assert.assertTrue("session must have acked, " + handler, handler.latch.await(5, TimeUnit.SECONDS)); Assert.assertTrue("producer specific handler must have acked, " + producerHandler, producerHandler.latch.await(5, TimeUnit.SECONDS)); }
@Test public void testMessageExpiredWithoutExpiryAddress() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, queue, false); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(false); message.setExpiration(System.currentTimeMillis() + MessageExpirationTest.EXPIRATION); producer.send(message); Thread.sleep(MessageExpirationTest.EXPIRATION * 2); session.start(); ClientConsumer consumer = session.createConsumer(queue); ClientMessage message2 = consumer.receiveImmediate(); Assert.assertNull(message2); consumer.close(); session.deleteQueue(queue); }
@Test public void testNonDurableMessageOnDurableQueue() throws Exception { boolean durable = true; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, queue, durable); ClientProducer producer = session.createProducer(address); producer.send(session.createMessage(!durable)); restart(); session.start(); ClientConsumer consumer = session.createConsumer(queue); Assert.assertNull(consumer.receiveImmediate()); consumer.close(); session.deleteQueue(queue); }