[英]How to make a JMS Producer to listen to a Response back from Consumer using TemporaryQueue?
I made a Java component in a Mule Flow that sends a message to a Queue, i want to do it programatically instead of using the Mule JMS component. 我在Mule Flow中制作了一个Java组件,该组件将消息发送到队列,我想以编程方式完成此工作,而不是使用Mule JMS组件。
From the Producer i got this code: 从生产者我得到以下代码:
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
String payload = eventContext.getMessage().getPayloadAsString();
JmsConnector amqConnector = (JmsConnector) eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");
ConnectionFactory factory = amqConnector.getConnectionFactory();
Connection connection;
connection = factory.createConnection();
try {
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("ExampleQueue");
MessageProducer producer = session.createProducer(queue);
TemporaryQueue replyQueue = session.createTemporaryQueue();
TextMessage message = session.createTextMessage(payload);
message.setJMSReplyTo(replyQueue);
message.setJMSDestination(queue);
message.setJMSCorrelationID("TestID");
producer.send(message, DeliveryMode.NON_PERSISTENT, 0, 5000);
MessageConsumer consumer = session.createConsumer(replyQueue);
MessageListener listener = consumer.getMessageListener();
listener.onMessage(message);
}finally {
connection.close();
}
return eventContext;
}
Now, from the Consumer i got a normal Mule JMS Component listening to that very same Queue (ExampleQueue). 现在,从Consumer那里,我得到了一个普通的Mule JMS组件,该组件正在监听相同的Queue(ExampleQueue)。
Now, i want this to be request-response. 现在,我希望这是请求-响应。 But when i run it now, i'm getting a NullPointerException at line
MessageListener listener = consumer.getMessageListener();
但是,当我现在运行它时,我在
MessageListener listener = consumer.getMessageListener();
行上得到了NullPointerException MessageListener listener = consumer.getMessageListener();
How can i make the Client Producer to be listening to the TemporaryQueue until it gets the response message? 我如何使客户端生产者在收到响应消息之前一直在监听TemporaryQueue?
Thanks 谢谢
Made it :D 做到了:D
Had to add this: 必须添加以下内容:
MessageConsumer consumer = session.createConsumer(replyQueue);
TextMessage receivedMessage = (TextMessage) consumer.receive();
text = receivedMessage.getText();
In order to get the Text from the consumer! 为了从消费者那里获得文字!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.