Forum Discussion

Said's avatar
6 years ago

Init JMS Topic before start of test


I would like to know how to clear a JMS topic before test execution. I have found code below via this link. How do I change the code to only read the JMS topics until there is nothing more on the topic?

Motivation for this: I have created a DataSource Loop test. But sometimes there are already (alot of) messages on the queue that need to be cleared, so that what I put on the topic and my test step to verify the topic are in sync.


Thanks in advance!


import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSConnectionHolder
import com.eviware.soapui.impl.wsdl.submit.transports.jms.util.HermesUtils
import com.eviware.soapui.impl.wsdl.submit.transports.jms.JMSEndpoint
import hermes.Hermes
import javax.jms.*

def jmsEndpoint = new  JMSEndpoint("jms://activeMQSession::queue_testQ1::queue_testQ1");
def hermes = HermesUtils.getHermes( context.testCase.testSuite.project, jmsEndpoint.sessionName)
def jmsConnectionHolder = new JMSConnectionHolder( jmsEndpoint, hermes, false, null ,null ,null);

Session queueSession = jmsConnectionHolder.getSession();
Queue queueSend = jmsConnectionHolder.getQueue( jmsConnectionHolder.getJmsEndpoint().getSend() );
Queue queueBrowse = jmsConnectionHolder.getQueue( jmsConnectionHolder.getJmsEndpoint().getReceive() );

MessageProducer messageProducer =queueSession.createProducer( queueSend );
TextMessage textMessageSend = queueSession.createTextMessage();
textMessageSend.setText( "jms message from groovy");
messageProducer.send( textMessageSend );
textMessageSend.setText( "another jms message from groovy");
messageProducer.send( textMessageSend );

QueueBrowser qb  = queueSession.createBrowser(queueBrowse);
Enumeration en= qb.getEnumeration();
    TextMessage tm = (TextMessage)en.nextElement(); tm.getText()
jmsConnectionHolder.closeAll()// don't forget to close session and connection


1 Reply

  • Olga_T's avatar
    SmartBear Alumni (Retired)

    Hi Said,


    Thanks for creating the topic. 

    Community, does anyone want to accept this challenge? :smileywink: