private String retrieveDestinationName(Destination destination, String headerName) { String destinationName = null; if (destination != null) { try { destinationName = (destination instanceof Queue) ? ((Queue) destination).getQueueName() : ((Topic) destination).getTopicName(); } catch (JMSException e) { this.processLog.warn("Failed to retrieve Destination name for '" + headerName + "' header", e); } } return destinationName; }
conn.start(); Session sess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageProducer prod = sess.createProducer(queue1); TextMessage tm1 = sess.createTextMessage("1"); TextMessage tm2 = sess.createTextMessage("2"); TextMessage tm3 = sess.createTextMessage("3"); MessageConsumer cons1 = sess.createConsumer(queue1); TextMessage r1 = (TextMessage) cons1.receive(); ProxyAssertSupport.assertEquals(tm1.getText(), r1.getText()); cons1.close(); MessageConsumer cons2 = sess.createConsumer(queue1); TextMessage r2 = (TextMessage) cons2.receive(); ProxyAssertSupport.assertEquals(tm2.getText(), r2.getText()); removeAllMessages(queue1.getQueueName(), true);
@Test public void testExceptionMessageListener3() throws Exception { Connection conn = createConnection(); conn.start(); Session sessSend = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Session sess = conn.createSession(true, Session.SESSION_TRANSACTED); MessageConsumer cons = sess.createConsumer(queue1); ExceptionRedelMessageListenerImpl listener = new ExceptionRedelMessageListenerImpl(sess); cons.setMessageListener(listener); MessageProducer prod = sessSend.createProducer(queue1); TextMessage m1 = sess.createTextMessage("a"); TextMessage m2 = sess.createTextMessage("b"); TextMessage m3 = sess.createTextMessage("c"); prod.send(m1); prod.send(m2); prod.send(m3); listener.waitForMessages(); ProxyAssertSupport.assertFalse(listener.failed); conn.close(); removeAllMessages(queue1.getQueueName(), true); }
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); Queue queue = session.createQueue("random?exclusive=true"); assertEquals("random", queue.getQueueName()); MessageProducer producer = session.createProducer(queue); MessageConsumer consumer1 = session.createConsumer(queue); MessageConsumer consumer2 = session.createConsumer(queue); MessageConsumer consumer3 = session.createConsumer(queue); connection.start(); TextMessage message = session.createTextMessage(); message.setText("Message" + j); producer.send(message); TextMessage tm = (TextMessage) consumer1.receive(10000); assertEquals("Message" + j, tm.getText()); connection.close();
@Test public void testReceiveWithClientAckThenCloseSession() throws Exception { Connection conn = null; try { conn = createConnection(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer prod = sess.createProducer(queue1); final int NUM_MESSAGES = 5; for (int i = 0; i < NUM_MESSAGES; i++) { TextMessage tm = sess.createTextMessage("message" + i); prod.send(tm); } Session sess2 = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageConsumer cons = sess2.createConsumer(queue1); conn.start(); for (int i = 0; i < NUM_MESSAGES; i++) { TextMessage tm = (TextMessage) cons.receive(500); ProxyAssertSupport.assertNotNull(tm); ProxyAssertSupport.assertEquals("message" + i, tm.getText()); } // Now close the session sess2.close(); } finally { if (conn != null) { conn.close(); } removeAllMessages(queue1.getQueueName(), true); } }
Connection conn2 = openWireCf2.createConnection(); conn1.start(); conn2.start(); Session session1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue targetQueue1 = session1.createQueue(QUEUE_NAME); Queue tempQueue = session1.createTemporaryQueue(); System.out.println("temp queue is " + tempQueue.getQueueName()); Session session2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue targetQueue2 = session2.createQueue(QUEUE_NAME); waitForBindings(0, tempQueue.getQueueName(), 1, 0, true); waitForBindings(0, QUEUE_NAME, 1, 0, false); waitForBindings(1, tempQueue.getQueueName(), 1, 0, false); MessageProducer prod1 = session1.createProducer(targetQueue1); MessageConsumer tempCons1 = session1.createConsumer(tempQueue); waitForBindings(0, tempQueue.getQueueName(), 1, 1, true); waitForBindings(1, QUEUE_NAME, 1, 1, true); TextMessage message = session1.createTextMessage("" + i); message.setJMSReplyTo(tempQueue); prod1.send(message);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(queue); TextMessage message = session.createTextMessage("Hello world Queues!"); System.out.printf("Sending message '%s' to queue '%s'...%n", message.getText(), queue.toString()); messageProducer.send(queue, message, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE); messageProducer.close(); session.close(); connection.close();
conn = createConnection(); Session producerSess = conn.createSession(true, Session.CLIENT_ACKNOWLEDGE); MessageProducer producer = producerSess.createProducer(queue1); Session consumerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageConsumer consumer = consumerSess.createConsumer(queue1); conn.start(); Message m = producerSess.createMessage(); producer.send(m); Message m = consumer.receive(500); if (m == null) { break; conn.close(); removeAllMessages(queue1.getQueueName(), true);
@Test(timeout = 60000) public void testConsumeMessagesAndCommit() throws Throwable { Connection connection = createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Queue queue = session.createQueue(getQueueName()); System.out.println("queue:" + queue.getQueueName()); MessageProducer p = session.createProducer(queue); for (int i = 0; i < 10; i++) { TextMessage message = session.createTextMessage(); message.setText("Message:" + i); p.send(message); } session.close(); session = connection.createSession(true, Session.SESSION_TRANSACTED); MessageConsumer cons = session.createConsumer(queue); connection.start(); for (int i = 0; i < 10; i++) { TextMessage message = (TextMessage) cons.receive(5000); Assert.assertNotNull(message); Assert.assertEquals("Message:" + i, message.getText()); } session.commit(); session.close(); Queue queueView = getProxyToQueue(getQueueName()); Wait.assertEquals(0, queueView::getMessageCount); }
@Test public void testCreateQueueTempQueue() throws Exception { conn = cf.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue tempQueue = session.createTemporaryQueue(); String tempQueueName = tempQueue.getQueueName(); // assertFalse(tempQueueName.startsWith(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX)); Queue replyQueue = session.createQueue(tempQueueName); MessageProducer producer = session.createProducer(replyQueue); producer.send(session.createMessage()); MessageConsumer consumer = session.createConsumer(replyQueue); conn.start(); assertNotNull(consumer.receive(10000)); }
connection1.start(); connection2.start(); Session session1 = connection1.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue tempQueue = session1.createTemporaryQueue(); Session session2 = connection2.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session2.createProducer(tempQueue); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); TextMessage m = session2.createTextMessage("Hello temp queue"); producer.send(m); MessageConsumer consumer = session1.createConsumer(tempQueue); TextMessage received = (TextMessage) consumer.receive(5000); assertNotNull(received); assertEquals("Hello temp queue", received.getText()); waitForBindings(this.server, tempQueue.getQueueName(), true, 0, 0, 5000); producer.send(m); fail("Send should fail since temp destination should not exist anymore."); } catch (InvalidDestinationException e) {
conn = getConnectionFactory().createConnection(); conn.start(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer cons1 = sess.createConsumer(queue1, selector1); MessageProducer prod = sess.createProducer(queue1); TextMessage m = sess.createTextMessage("message-a-" + j); m.setStringProperty("beatle", "john"); prod.send(m); m = sess.createTextMessage("messag-b-" + j); m.setStringProperty("beatle", "kermit the frog"); prod.send(m); Message m = cons1.receive(1000); Message m = cons1.receiveNoWait(); removeAllMessages(queue1.getQueueName(), true);
@Test(timeout = 60000) public void testProduceMessageAndCommit() throws Throwable { Connection connection = createConnection(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); javax.jms.Queue queue = session.createQueue(getQueueName()); System.out.println("queue:" + queue.getQueueName()); MessageProducer p = session.createProducer(queue); for (int i = 0; i < 10; i++) { TextMessage message = session.createTextMessage(); message.setText("Message:" + i); p.send(message); } session.commit(); session.close(); Queue queueView = getProxyToQueue(getQueueName()); Wait.assertEquals(10, queueView::getMessageCount); }
conn = createConnection(); Session producerSess = conn.createSession(true, Session.CLIENT_ACKNOWLEDGE); MessageProducer producer = producerSess.createProducer(queue1); producer.setDeliveryMode(DeliveryMode.PERSISTENT); Session consumerSession = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = consumerSession.createConsumer(queue1); CountDownLatch latch = new CountDownLatch(1); conn.start(); myReceiver myReceiver = new myReceiver(latch, conn); consumer.setMessageListener(myReceiver); long lastBatchTime = System.currentTimeMillis(); int sentId = 0; Message m = producerSess.createMessage(); m.setIntProperty("foo", sentId); sentId++; producer.send(m); conn.close(); removeAllMessages(queue1.getQueueName(), true);
@Test public void testBrowser() throws Exception { Connection conn = null; try { conn = createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer prod = session.createProducer(queue1); prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT); TextMessage m = session.createTextMessage("message one"); prod.send(m); // Give the message time to reach the queue Thread.sleep(2000); QueueBrowser browser = session.createBrowser(queue1); Enumeration e = browser.getEnumeration(); TextMessage bm = (TextMessage) e.nextElement(); ProxyAssertSupport.assertEquals("message one", bm.getText()); } finally { if (conn != null) { conn.close(); } removeAllMessages(queue1.getQueueName(), true); } }
@Test public void testIllegalState() throws Exception { // IllegalStateException should be thrown if commit or rollback // is invoked on a non transacted session Connection conn = getConnectionFactory().createConnection(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer prod = sess.createProducer(queue1); prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT); Message m = sess.createTextMessage("hello"); prod.send(m); try { sess.rollback(); ProxyAssertSupport.fail(); } catch (javax.jms.IllegalStateException e) { } try { sess.commit(); ProxyAssertSupport.fail(); } catch (javax.jms.IllegalStateException e) { } conn.close(); removeAllMessages(queue1.getQueueName(), true); }
@Test public void testGetDeliveriesForSession() throws Exception { Connection conn = null; try { conn = createConnection(); Session session1 = conn.createSession(true, Session.SESSION_TRANSACTED); Session session2 = conn.createSession(true, Session.SESSION_TRANSACTED); MessageProducer prod = session2.createProducer(queue1); Message msg = session2.createMessage(); prod.send(msg); session1.close(); session2.commit(); } finally { if (conn != null) { conn.close(); } removeAllMessages(queue1.getQueueName(), true); } }
@Test public void test1xNamingNegative() throws NamingException, JMSException { liveService.getSecurityStore().setSecurityEnabled(false); Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"); props.put("connectionFactory.ConnectionFactory", "vm://0"); Context ctx = new InitialContext(props); ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("ConnectionFactory"); Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(); assertFalse(session.createQueue("testQueue").getQueueName().startsWith(PacketImpl.OLD_QUEUE_PREFIX.toString())); assertFalse(session.createTemporaryQueue().getQueueName().startsWith(PacketImpl.OLD_TEMP_QUEUE_PREFIX.toString())); assertFalse(session.createTopic("testTopic").getTopicName().startsWith(PacketImpl.OLD_TOPIC_PREFIX.toString())); assertFalse(session.createTemporaryTopic().getTopicName().startsWith(PacketImpl.OLD_TEMP_TOPIC_PREFIX.toString())); connection.close(); }
Mockito.when(queue.getQueueName()).thenReturn(destinationName); Mockito.when(session.createQueue(Mockito.anyString())).thenReturn(queue); Mockito.when(session.createBytesMessage()).thenReturn(Mockito.mock(BytesMessage.class)); MessageProducer producer = Mockito.mock(MessageProducer.class); Mockito.when(session.createProducer(queue)).thenReturn(producer); Mockito.when(connection.createSession(Mockito.anyBoolean(), Mockito.anyInt())).thenReturn(session); Mockito.when(this.jmsConnectionFactory.createConnection()).thenReturn(connection); Mockito.verify(producer).setDeliveryMode(DeliveryMode.NON_PERSISTENT); Mockito.verify(producer).setPriority(5);
@Test public void testMessageCounter() throws Exception { Connection conn = cf.createConnection(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = createQueue(true, "Test"); MessageProducer producer = sess.createProducer(queue); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); final int numMessages = 100; for (int i = 0; i < numMessages; i++) { TextMessage mess = sess.createTextMessage("msg" + i); producer.send(mess); } conn.close(); QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queue.getQueueName()); assertNotNull(control); System.out.println(control.listMessageCounterAsHTML()); jmsServer.stop(); restartServer(); control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queue.getQueueName()); assertNotNull(control); System.out.println(control.listMessageCounterAsHTML()); }