false true true stoptest false 1 1 1 false groovy true import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.BrokerFactory; import org.apache.jmeter.util.JMeterUtils; import org.apache.commons.io.FileUtils; import java.io.File; File file = new File(JMeterUtils.getJMeterHome(), "bin/activemq-data"); log.info("Deleting {}", file); FileUtils.deleteDirectory(file); log.info("Creating activemq config from {}", JMeterUtils.getJMeterHome()+ "/bin/testfiles/activemq.xml"); try { String path = JMeterUtils.getJMeterHome()+ "/bin/testfiles/activemq.xml"; path = path.replace('\\', '/'); path = path.replaceAll(" ", "%20"); BrokerService broker = BrokerFactory.createBroker("xbean:file:"+path, true); props.put("ACTIVEMQ_BROKER", broker); } catch(Exception ex) { log.error("Error configuring ActiveMQ", ex); } 1 0 0 1000 100 continue false 1 1 1 false ConnectionFactory dynamicQueues/requestQueue0 dynamicQueues/requestQueue0 false true Test org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 true 1 Test Assertion.response_data false 16 true dynamicQueues/requestQueue0-tmp import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.naming.InitialContext; import javax.naming.Context; import java.util.Properties; def thread = Thread.start { Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); props.setProperty(Context.PROVIDER_URL,"tcp://127.0.0.1:61616"); Context namingCtx = new InitialContext(props); ConnectionFactory cf = (ConnectionFactory)namingCtx.lookup("ConnectionFactory"); Connection con = cf.createConnection(); log.info("Creating connection to "+Parameters); Destination dest = (Destination)namingCtx.lookup(Parameters); try { Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); // non-transacted session (more) MessageConsumer consumer = session.createConsumer(dest); consumer.setMessageListener(new MyMessageListener(session)); log.info("Starting connection to "+Parameters); con.start(); // start the connection (more) Thread.sleep(15000); session.close(); log.info("Closed session"); } finally { con.close(); // free all resources (more) } } SampleResult.setResponseMessageOK(); SampleResult.setResponseData("Started Message Consumer", "UTF-8"); class MyMessageListener implements MessageListener { Logger log = LoggerFactory.getLogger(MyMessageListener.class); Session session; public MyMessageListener(Session session) { this.session = session; } public void onMessage(Message message) { TextMessage textMessage = (TextMessage) message; try { Queue replyQueue = (Queue) message.getJMSReplyTo(); log.info("Reply queue is: {}", replyQueue); log.info("Creating sender"); QueueSender sender = session.createSender(replyQueue); log.info("Creating reply"); TextMessage reply = session.createTextMessage("Reply to:"+textMessage.getText()); log.info("Sending reply"); sender.send(reply); log.info("Tidyup sender - you could be processing many requests"); sender.close(); } catch (JMSException e) { log.error("Error replying to message", e); } } } groovy Uses ReplyTo Queue to answer a message Started Message Consumer Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue0-tmp false true Test org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 true Test case where Request queue is empty meaning we'll wait for a reply on ReplyTo queue 1 Reply to:Test Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue1 dynamicQueues/requestQueue1 false false Test-with-customer-correlationId org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 1 Test-with-customer-correlationId Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue2 dynamicQueues/requestQueue2 false false Test-with-customer-correlationId-and-jms-properties-no-matching-selector org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String NewsType Sports java.lang.String NewsType='Opinion' 1 No reply message received Assertion.response_message true 16 ConnectionFactory dynamicQueues/requestQueue3 dynamicQueues/requestQueue3 false false Test-with-customer-correlationId-and-jms-properties-matching-selector org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String NewsType Sports java.lang.String NewsType='Sports' 1 Test-with-customer-correlationId-and-jms-properties-matching-selector Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue4 false false Test-send-only org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 0 Oneway request has no response data Assertion.response_data false 16 1 0 0 1000 100 true import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import javax.naming.InitialContext; import javax.naming.Context; import java.util.Properties; Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory"); props.setProperty(Context.PROVIDER_URL,"tcp://127.0.0.1:61616"); Context namingCtx = new InitialContext(props); ConnectionFactory cf = (ConnectionFactory)namingCtx.lookup("ConnectionFactory"); Connection con = cf.createConnection(); Destination dest = (Destination)namingCtx.lookup("dynamicQueues/requestQueue4"); try { Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); // non-transacted session (more) MessageConsumer consumer = session.createConsumer(dest); con.start(); // start the connection (more) // run forever Message msg = consumer.receive(); // blocking! (more) if (msg instanceof TextMessage) { SampleResult.setResponseMessageOK(); TextMessage tm = (TextMessage) msg; SampleResult.setResponseData("Received : "+tm.getText(), "UTF-8"); } else { SampleResult.setResponseMessageKO(); SampleResult.setResponseData("No message received", "UTF-8"); } } finally { con.close(); // free all resources (more) } groovy Received : Test-send-only Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue5 false false Test-send-only-for-count-and-read org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 0 0 Oneway request has no response data Assertion.response_data false 16 1 0 0 1000 100 ConnectionFactory dynamicQueues/requestQueue5 false false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 3 3 requestQueue5 has 1 messages Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue5 false false 1000 org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 2 2 Test-send-only-for-count-and-read Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue6 false false Test-send-only-for-clear org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 0 0 Oneway request has no response data Assertion.response_data false 16 1 0 0 1000 100 ConnectionFactory dynamicQueues/requestQueue6 false false 100 org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 4 1000 4 requestQueue6: 1 message(s) removed Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue6 false false Test-send-only-for-count-and-read org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 JMSCorrelationId MsgId-${__time(,)} java.lang.String 3 3 requestQueue6 has 0 messages Assertion.response_data false 16 ConnectionFactory dynamicQueues/requestQueue7 1 false true 2000 test org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://localhost:61616 true No reply message received Assertion.response_message true 16 continue false 1 1 1 false false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic1 Test Topic jms_use_text jms_text_message 1 false prop1 value1 java.lang.String propInt 1 java.lang.Integer propBoolean true java.lang.Boolean propDouble 1.123 java.lang.Double propFloat 1.2 java.lang.Float false 1 messages published Assertion.response_message false 16 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic1 false 1 true jms_subscriber_receive 1 message(s) received successfully of 1 expected Assertion.response_message false 16 Test Topic Assertion.response_data false 16 Properties: prop1 value1 propBoolean true propInt 1 propDouble 1.123 propFloat 1.2 Assertion.response_headers false 16 continue false 1 1 1 false Persistent Publish / Subscribe with selectors false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2 Test Topic jms_use_text jms_text_message 1 false prop1 value1 java.lang.String propInt 1 java.lang.Integer propBoolean true java.lang.Boolean propDouble 1.123 java.lang.Double propFloat 1.2 java.lang.Float false 1 messages published Assertion.response_message false 16 1 0 0 1000 100 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2 false 1 true jms_subscriber_receive Non matching selector propInt = 2 3000 404 Assertion.response_code true 8 1 0 0 1000 100 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2 false 1 true jms_subscriber_receive Matching selector 3000 propInt = 1 Test Topic Assertion.response_data false 16 continue false 1 1 1 false Persistent Publish / Subscribe false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2c Test Topic jms_use_text jms_text_message 1 false prop1 value1 java.lang.String propInt 1 java.lang.Integer propBoolean true java.lang.Boolean propDouble 1.123 java.lang.Double propFloat 1.2 java.lang.Float false 1 messages published Assertion.response_message false 16 1 0 0 1000 100 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2c false 1 true jms_subscriber_on_message Non matching selector 3000 propInt = 2 404 Assertion.response_code true 8 1 0 0 1000 100 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2c false 1 true jms_subscriber_on_message Matching selector 3000 propInt = 1 Test Topic Assertion.response_data false 16 continue false 1 1 1 false Persistent Publish / Subscribe false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2d Test Durable Topic Message jms_use_text jms_text_message 1 false prop1 value1 java.lang.String propInt 1 java.lang.Integer propBoolean true java.lang.Boolean propDouble 1.123 java.lang.Double propFloat 1.2 java.lang.Float false 1 messages published Assertion.response_message false 16 1 0 0 5000 100 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic2d false 1 true jms_subscriber_receive Matching selector 3000 jmeter-${__machineIP()}-id jmeter-${__machineIP()} Test Durable Topic Message Assertion.response_data false 16 continue false 1 1 1 false false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic3 Test Topic jms_use_text jms_text_message 1 false prop1 value1 java.lang.String propInt 1 java.lang.Integer propBoolean true java.lang.Boolean propDouble 1.123 java.lang.Double propFloat 1.2 java.lang.Float false true 1 messages published Assertion.response_message false 16 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic3 false 1 true jms_subscriber_receive Will not receive message as messages are Non Persistent and it is initialized for each sample propInt = 1 3000 false 404 Assertion.response_code true 8 false org.apache.activemq.jndi.ActiveMQInitialContextFactory tcp://127.0.0.1:61616 ConnectionFactory dynamicTopics/requestTopic3 false 1 true jms_subscriber_receive Will receive message as messages are Non Persistent but it is initialized on startup 3000 propInt = 1 Test Topic Assertion.response_data false 16 continue false 1 1 1 false groovy true import org.apache.activemq.broker.BrokerService; import org.apache.jmeter.util.JMeterUtils; import org.apache.commons.io.FileUtils; BrokerService broker = props.get("ACTIVEMQ_BROKER"); Thread.start { // The delay is to allow for JMS Publishers to close resources in testEnded event // Note: JMeter warns for non-daemon threads which are active // So the sleep duration should be less than 2sec // Otherwise "The following non-daemon threads are still running" is printed sleep(700) broker.stop() FileUtils.deleteDirectory(new File(JMeterUtils.getJMeterHome(), "bin/activemq-data")) } false saveConfig false false true true true true true false false false false false false true false false false false 0 true true JMS_TESTS.csv Clear messages on Send Queue requestQueue6:1 message(s) removed false saveConfig false false true true true true true false true true false false true false false false false false 0 true true JMS_TESTS.xml