【问题标题】:How to make a JMS Producer to listen to a Response back from Consumer using TemporaryQueue?如何让 JMS 生产者使用 TemporaryQueue 监听来自消费者的响应?
【发布时间】:2013-09-01 01:53:44
【问题描述】:

我在 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)。

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

如何让客户端生产者在收到响应消息之前一直监听 TemporaryQueue?

谢谢

【问题讨论】:

  • 您放置消息的队列是否被 mule 端点消耗?

标签: java activemq mule


【解决方案1】:

成功了:D

必须添加这个:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-14
    • 2012-05-18
    • 2018-03-07
    • 1970-01-01
    • 2017-07-13
    • 2016-04-23
    • 2016-02-08
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多