2017-04-09 1 views
1

ActiveMQ 예제를 확인 중이며 대부분의 스레드가 Thread에 포함되어 있습니다. 예제 중 하나를 가져 와서 스레드 부분을 제거하고 실행하여 예상대로 작동했습니다. 스레드가 어디로 들어 왔는지 궁금하거나 그냥 환경이나 다른 것에 더 적합합니까? 제발 도와주세요. 감사.왜 ActiveMQ에 스레드를 포함합니까?

샘플 코드 : 스레드가 다음 그림에 와서, 또는 환경이나 뭔가의 단지 더 정장 어디 그냥

public class TopicConsumer implements Runnable { 

    ActiveMQConnectionFactory connectionFactory = null; 

    public TopicConsumer(ActiveMQConnectionFactory connectionFactory){ 
     this.connectionFactory = connectionFactory; 
    } 

    @Override 
    public void run() { 
     try { 
      Connection connection = connectionFactory.createConnection(); 

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

      Destination topicDestination = session.createTopic("CLIMATE"); 

      MessageConsumer messageConsumer = session.createConsumer(topicDestination); 

      Message message = messageConsumer.receive(); 

      TextMessage textMessage = (TextMessage) message; 

      System.out.println(textMessage.getText()); 

      session.close(); 
      connection.close(); 
     } catch (JMSException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
+0

예제를 게시하거나 참조 할 수 있습니까? – developer

+1

일반적으로 기본 동작 스트림을 차단하거나 다른 병렬 처리를 사용하지 않도록 스레드를 사용합니다. – Henry

+1

아마 물건을 넣을 때 발신자가 막히지 않도록해야합니다. 그러나 어떤 코드도없이 말하기는 어렵습니다. – GhostCat

답변

1

궁금해? 당신이 주제를 JMS로 메시지를 배치 할 때 일반적으로

, 그것은 당신이 JMS 큐를 선택한, 그렇지 않으면 다수의 소비자를위한 것을 의미한다. 코드에서 동일한 jms 토픽에서 여러 소비자가 메시지를 병렬로 사용하여 을 실행할 수 있습니다. 참고로 run() 메소드 안에 주제 이름을 하드 코드했습니다. JMS 환경이나 MQ와는 아무 관련이 없으며 여러 소비자를 사용하여 메시지를 병렬로 소비하는 것입니다.

here에서 가져온 텍스트 (강조 표시)를 참조 할 수 있습니다.이 텍스트는 jms 항목의 원리를 설명합니다.

JMS에서 주제는 공개 및 서브 스크립 션 의미를 구현합니다. 메시지를 게시하면 관심있는 모든 구독자에게 - 이므로 0에서 까지 많은 구독자는 메시지 사본을 받게됩니다.

관련 문제