Closed komyos closed 3 years ago
I already fixed this issue, just need to provide JMSReplyTo with the destination queue you want to get message back
@Test
void testMqMock() {
// Initializes MQ service object.
log.info("Initializing MQ objects...");
val mqConnFactory = new MQConnectionFactory();
mqConnFactory.setStringProperty(WMQConstants.WMQ_HOST_NAME, MQ_HOST);
mqConnFactory.setIntProperty(WMQConstants.WMQ_PORT, MQ_PORT);
mqConnFactory.setStringProperty(WMQConstants.WMQ_CHANNEL, MQ_CHANNEL);
mqConnFactory.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
mqConnFactory.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, MQ_QUEUE_MANAGER);
mqConnFactory.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, MQ_APP_NAME);
mqConnFactory.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, true);
mqConnFactory.setStringProperty(WMQConstants.USERID, MQ_USER_ID);
mqConnFactory.setStringProperty(WMQConstants.PASSWORD, MQ_API_KEY);
try {
// Connects to MQ Cloud.
log.info("Connecting to IBM MQ Cloud...");
val mqConn = mqConnFactory.createConnection();
// Initializes session.
val mqSession = mqConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Initializes producer.
val mqProducer = mqSession.createProducer(mqSession.createQueue(String.format("queue:///%s", MQ_QUEUE_NAME)));
// Publishes a message to MQ.
log.info("Publishing a message to MQ...");
val mqMessage = mqSession.createTextMessage(this.expectedMessage);
val id = UUID.randomUUID().toString();
mqMessage.setJMSCorrelationID(id);
mqMessage.setJMSMessageID(id);
mqMessage.setJMSType("MQ Mock");
mqMessage.setJMSReplyTo(mqSession.createQueue(String.format("queue:///%s", MQ_QUEUE_NAME_REPLY))); // <-- This is what we need to set
try {
mqConn.start();
mqProducer.send(mqMessage);
} finally {
mqConn.stop();
}
Assertions.assertDoesNotThrow(() -> log.info("Succeeded."));
} catch (JMSException e) {
log.error("There is an error occurred while processing MQ.", e);
Assertions.fail(e);
}
}
I would like to use citrus simulator as MQ mock for integration test. I implemented IBM MQ instead of ActiveMQ provided on example, everything works fine, citrus simulator is able to connect to IBM MQ cloud and get messages from particular queue but got an error occurred while sending response message
error
com.consol.citrus.exceptions.CitrusRuntimeException: Failed to get correlation key for 'citrus_message_correlator_simulatorJmsInboundEndpoint:consumer''
pom.xml
application.properties
citrus-simulator-context.xml
SimulatorJmsConfig.java
for templates, xsd, scenarios and starters, I just copied from sample-jms but different packages (not com.consol.citrus.simulator.sample)