0

メッセージをキューに送信する Java コンポーネントを Mule Flow で作成しました。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;
}

ここで、コンシューマから、まったく同じキュー (ExampleQueue) をリッスンする通常の Mule JMS コンポーネントを取得しました。

今、私はこれを要求応答にしたいと考えています。しかし、今実行すると、次の行で NullPointerException が発生しますMessageListener listener = consumer.getMessageListener();

クライアント プロデューサーが応答メッセージを受け取るまで、TemporaryQueue をリッスンするようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

やった :D

これを追加する必要がありました:

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

消費者からテキストを取得するために!

于 2013-08-28T20:21:15.920 に答える