2013-10-31 2 views
1

저는 jms 및 activemq를 처음 사용합니다. 내가 activemq에 하나의 정적 대기열에 하나의 메시지를 생성하고 getJMSReplyTo를 사용하여 임시 대기열로 답장을 다시받습니다. 코드는 내 대답 처리기가 지금 임시 큐에서 결과를 얻고있다다른 세션의 임시 대기열에서 메시지를 가져 오는 방법

@Override 
public void onMessage(Message message) { 

    try 
    { 

     System.out.println(message.getStringProperty("status")); 
    } 
    catch (JMSException e) 
    { 
      e.printStackTrace(); 
    } 
} 

을 다음과

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); 

    // Create a Connection 
    Connection connection = connectionFactory.createConnection(); 
    connection.start(); 

    // Create a Session 
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 


    // Create the destination (Topic or Queue) 
    Destination destination = (Destination) session.createQueue("PostWithParameter_Queue"); 

    // Create a MessageConsumer from the Session to the Topic or Queue 
    MessageConsumer consumer = session.createConsumer(destination); 
    //consumer.setMessageListener(new StaticQueueListener()); 
    // Wait for a message 
    Message message = (Message) consumer.receive(); 
    MessageConsumer consumer1 = session.createConsumer(message.getJMSReplyTo()); 
    consumer1.setMessageListener(new ReplyHandler()); 
    consumer.close(); 
    session.close(); 

따르고있다. 같은 세션에 있기 때문입니다. 내 질문은 임시 대기열 이름을 사용하여 differesnt 세션에서 임시 대기열에서 메시지를 가져오고 싶습니다. 임시 큐 이름을 사용하는 다른 클라이언트의 임시 큐에서 메시지를 가져 오려면 어떻게해야합니까? .

+0

당신이 제공하는 모든 JMS 세션과 함께 작업 할 수 리스너, 그것은 당신이 메시지를 배치 한 것과 동일한 세션 필요는 없습니다 . – Chetya

답변

0

청취자는 사용자가 제공 한 모든 JMS 세션에서 작동 할 수 있지만 메시지를 배치 한 것과 동일한 세션 일 필요는 없습니다.

+0

나는 메시지를 소비하지 않고 그 name.its로 하나의 큐를 생성하는 tempQueue 이름으로 메시지를 소비하려고했을 때 u.but와 동의했다. 대답을위한 – nichu09

1

일반적으로 reply-to jms 헤더를 설정하면 메시지를 소비 할 때마다 (예 : 확실히 다른 세션에서 ...) 임시 대상인 JMSReplyTo 헤더를 꺼내어 회신 할 수 있습니다 그걸로.

당신은 ActiveMQ를 위키를 확인해야합니다 :

http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html

+0

hii thnks. 클라이언트 측에서 messagelistner를 만들고 ativemq와 동일한 스레드 또는 세션에서 메시지를 생성합니다. 내가 원하는 것은 messagelistner (메시지 소비)를 다른 스레드에서 사용하고 메시지를 소비합니다. 그걸 어떻게 성취 할 수 있니? 통해 ur 답장을 기다리고 .. – nichu09

관련 문제