2013-08-28 1 views
0

메시지를 큐로 보내는 Mule Flow에서 Java 구성 요소를 만들었습니다. Mule JMS 구성 요소를 사용하는 대신 프로그래밍 방식으로 수행하려고합니다. 나는이 코드를 가지고 생산자에서 TemporaryQueue를 사용하여 소비자로부터 응답을 수신 대기하도록 JMS Producer를 만드는 방법은 무엇입니까?

: 소비자에서 지금

@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; 
} 

내가 정상적인 뮬 JMS 구성 요소는 바로 그 같은 큐 (ExampleQueue)을 듣고 있어요.

이제 요청 응답이 되길 바랍니다. 내가 지금 실행 때, 나는 MessageListener listener = consumer.getMessageListener();

어떻게 내가 그것을 응답 메시지를 때까지 클라이언트 프로듀서가 TemporaryQueue을 듣고 할 수 있습니다 라인에서 NullPointerException이 받고 있어요?

감사

+0

메시지를 전달할 대기열이 노새 종점에서 사용 중이십니까? – genjosanzo

답변

1

은 제작 : D

이를 추가했다 :

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

소비자의 텍스트를 얻기 위하여!

관련 문제