Java 如何使JMS生产者使用临时队列侦听消费者的响应?
我在Mule流中创建了一个Java组件,用于向队列发送消息,我希望以编程的方式执行此操作,而不是使用Mule JMS组件 从制作人那里我得到了以下代码:Java 如何使JMS生产者使用临时队列侦听消费者的响应?,java,activemq,mule,Java,Activemq,Mule,我在Mule流中创建了一个Java组件,用于向队列发送消息,我希望以编程的方式执行此操作,而不是使用Mule JMS组件 从制作人那里我得到了以下代码: @Override public Object onCall(MuleEventContext eventContext) throws Exception { String payload = eventContext.getMessage().getPayloadAsString(); JmsConnector amqCon
@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;
}
现在,从消费者那里,我得到了一个普通的mulejms组件,它正在监听同一个队列(ExampleQueue)
现在,我希望这是请求-响应。但是当我现在运行它时,我在第MessageListener=consumer.getMessageListener()行得到一个NullPointerException代码>
如何使客户端生产者侦听临时队列,直到它收到响应消息
谢谢成功了:D
必须补充这一点:
MessageConsumer consumer = session.createConsumer(replyQueue);
TextMessage receivedMessage = (TextMessage) consumer.receive();
text = receivedMessage.getText();
为了从消费者那里获取文本 您放置消息的队列是否被mule端点使用?