6.3. 메시지 수신


이 예제는 JNDI 컨텍스트를 생성하고, 이를 사용하여 ConnectionFactoryDestination 을 찾고, 팩토리를 사용하여 연결을 생성 및 시작한 다음 세션을 생성합니다. 그런 다음 대상에 대해 MessageConsumer 가 생성되고 이를 사용하여 메시지를 수신하며 해당 콘텐츠가 콘솔에 출력됩니다. 그러면 연결이 닫히고 프로그램이 종료됩니다. 전송 예에서 와 동일한 JNDI 구성이 사용됩니다.

수신기 예제의 실행 가능한 변형은 이전에 3장. 시작하기 에서 다루는 Hello World 예제와 함께 클라이언트 배포의 예제 디렉터리에 포함되어 있습니다.

예: 메시지 수신

package org.jboss.amq.example;

import jakarta.jms.Connection;
import jakarta.jms.ConnectionFactory;
import jakarta.jms.Destination;
import jakarta.jms.ExceptionListener;
import jakarta.jms.JMSException;
import jakarta.jms.Message;
import jakarta.jms.MessageConsumer;
import jakarta.jms.Session;
import jakarta.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;

public class Receiver {
  public static void main(String[] args) throws Exception {
    try {
      Context context = new InitialContext(); 
1


      ConnectionFactory factory = (ConnectionFactory) context.lookup("myFactoryLookup");
      Destination destination = (Destination) context.lookup("myDestinationLookup"); 
2


      Connection connection = factory.createConnection("<username>", "<password>");
      connection.setExceptionListener(new MyExceptionListener());
      connection.start(); 
3


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


      MessageConsumer messageConsumer = session.createConsumer(destination); 
5


      Message message = messageConsumer.receive(5000); 
6


      if (message == null) { 
7

        System.out.println("A message was not received within given time.");
      } else {
        System.out.println("Received message: " + ((TextMessage) message).getText());
      }

      connection.close(); 
8

    } catch (Exception exp) {
      System.out.println("Caught exception, exiting.");
      exp.printStackTrace(System.out);
      System.exit(1);
    }
 }

  private static class MyExceptionListener implements ExceptionListener {
    @Override
    public void onException(JMSException exception) {
      System.out.println("Connection ExceptionListener fired, exiting.");
      exception.printStackTrace(System.out);
      System.exit(1);
    }
  }
}

1
JNDI 컨텍스트 를 생성하여 ConnectionFactoryDestination 오브젝트를 조회합니다. 설정은 앞에서 설명한 대로 jndi.properties 파일에서 선택합니다.
2
ConnectionFactoryDestination 오브젝트는 조회 이름을 사용하여 JNDI 컨텍스트에서 검색됩니다.
3
팩토리는 연결을 생성하는 데 사용되며, 그러면 ExceptionListener 가 등록되고 시작됩니다. 연결을 생성할 때 제공되는 인증 정보는 일반적으로 적절한 외부 구성 소스에서 가져와 애플리케이션 자체와 별도로 유지되며 독립적으로 업데이트할 수 있습니다.
4
비전송된 자동 확인 세션이 연결 에서 생성됩니다.
5
MessageConsumer대상 에서 메시지를 수신하도록 생성됩니다.
6
메시지를 수신하라는 호출은 5초의 시간 초과로 수행됩니다.
7
결과가 확인되고 메시지가 수신되면 해당 콘텐츠가 출력되거나 메시지가 수신되지 않았음을 알 수 있습니다. 결과는 Sender 가 보낸 것을 알고 있기 때문에 텍스트 메시지로 명시적으로 캐스팅됩니다.
8
연결이 닫힙니다. 세션MessageConsumer 는 암시적으로 닫힙니다.

이는 예제일 뿐입니다. 실제 애플리케이션은 일반적으로 긴 MessageConsumer 를 사용하고 시간이 지남에 따라 많은 메시지를 수신합니다. 각 메시지에 대한 연결,세션MessageConsumer 를 열고 종료하는 것은 일반적으로 효율적이지 않습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동