We can use HermesJMS which provides out of the box feature to communicate with any of the messaging system. It comes with both soapUI open source and pro version. However, the drawback is message will contain JMS header and the responsibility of converting JMS to native header format lies with the developer/ tester. I have used IBM MQ as messaging system and in order to avoid any transformation from JMS to MQMD, I have used groovy to put and read messages.
Add a groovy test step to get hold of the XML message to be sent
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder(“AddDiscussionBoardItem#Request”)
log.info holder.getXml()
def xml = holder.getXml()
//Connect to the queue manager
// Queue used for putting message
def propIQueue = testRunner.testCase.getProperty(“inputqueue”)
//Queue used for reading message
def propOQueue = testRunner.testCase.getProperty(“outputqueue”)
//setting hostname
def propHostname = testRunner.testCase.getProperty(“hostname”)
MQEnvironment.@hostname = propHostname.getValue()
//setting port
def propPort = testRunner.testCase.getProperty(“port”)
MQEnvironment.@port = Integer.parseInt(propPort.getValue())
//setting Channel
def propChannel = testRunner.testCase.getProperty(“channel”)
MQEnvironment.@channel = propChannel.getValue()
//setting Queue Manager
def propQM = testRunner.testCase.getProperty(“queuemanager”)
def queueManager = new MQQueueManager(propQM.getValue())
//Put message in queue
def putMsg = new MQMessage();
int putOpenOpts = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
def putQ = queueManager1.accessQueue(propIQueue.getValue(), putOpenOpts);
putMsg.writeString(xml);
def pmo = new MQPutMessageOptions();
putQ.put(putMsg, pmo);
putQ.close()
//Read message from queue
def getMsg = new MQMessage();
int getOpenOpts = MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST;
MQGetMessageOptions gmo=new MQGetMessageOptions();
def getQ = queueManager1.accessQueue(propOQueue.getValue(), getOpenOpts);
getQ.get(getMsg, gmo);
def response = getMsg.readString(getMsg.getMessageLength())
getQ.close()