Java 如何使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

我在Mule流中创建了一个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;
}
现在,从消费者那里,我得到了一个普通的mulejms组件,它正在监听同一个队列(ExampleQueue)

现在,我希望这是请求-响应。但是当我现在运行它时,我在第
MessageListener=consumer.getMessageListener()行得到一个NullPointerException

如何使客户端生产者侦听临时队列,直到它收到响应消息

谢谢

成功了:D

必须补充这一点:

MessageConsumer consumer = session.createConsumer(replyQueue);      
            TextMessage receivedMessage = (TextMessage) consumer.receive(); 
            text = receivedMessage.getText();

为了从消费者那里获取文本

您放置消息的队列是否被mule端点使用?