我在 Mule Flow 中制作了一个 Java 组件,它向队列发送消息,我想以编程方式而不是使用 Mule JMS 组件。
从制片人那里我得到了这个代码:
@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;
}
现在,从消费者那里,我得到了一个普通的 Mule JMS 组件,它正在监听同一个队列(ExampleQueue)。
现在,我希望这是请求响应。但是当我现在运行它时,我得到了一个 NullPointerExceptionMessageListener listener = consumer.getMessageListener();
如何让客户端生产者在收到响应消息之前一直监听 TemporaryQueue?
谢谢