이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장

Eclipse를 통해 Azure에서 AMQP 1.0을 JMS와 함께 사용하는 방법

업데이트 날짜: 2015년 3월

AMQP(Advanced Message Queuing Protocol) 1.0은 강력한 플랫폼 간 메시징 응용 프로그램을 빌드하는 데 사용되는 효율적이고 신뢰할 수 있는 유선 수준 메시징 프로토콜입니다. Azure 서비스 버스에는 AMQP 1.0 지원이 미리 보기 기능으로 추가되었습니다. 아래 단계에서는 Eclipse용 Azure 도구 키트(Microsoft Open Technologies에서 제작)를 사용하여 Azure에 배포된 기본적인 JSP 응용 프로그램에서 AMQP 1.0과 함께 JMS(Java 메시지 서비스)를 사용하는 방법을 설명합니다.

  1. 동적 웹 프로젝트를 만듭니다. Eclipse의 메뉴에서 [파일]을 클릭하고 [새로 만들기]을 클릭한 다음 [동적 웹 프로젝트]를 클릭합니다. 동적 웹 프로젝트를 만드는 자세한 단계는 Eclipse에서 Azure용 Hello World 응용 프로그램 만들기에 나와 있습니다.

  2. 동적 웹 프로젝트에 JSP 파일 index.jsp를 추가합니다. index.jsp에는 다음 코드를 사용합니다.

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>AMQP 1.0 message sender</title>
    </head>
    <form method="post" action="sendMessages.jsp">
    <br/>
    This sample sends a message to a queue.
    <br/><br/>
    Enter your message: <input type="text" name="message" />
    <input type="submit" name="submit" value="Send Message" />
    </form>
    </html>
    
  3. 동적 웹 프로젝트에 JSP 파일 sendMessages.jsp를 추가합니다. sendMessages.jsp에는 다음 코드를 사용합니다.

    <%@ page import="myAMQPPackage.MyAMQPSender" language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>AMQP 1.0 page 2</title>
    </head>
    <body>
    <%
        out.print("Sending message -------> " + request.getParameter("message") );
        out.print("<br/>");
    
        try 
        {
            // Send the message.
            MyAMQPSender.postMessages(request.getParameter("message"));
            out.println("Message sent successfully\n");
        }
        catch (Exception e) 
        {
            out.println("Error occurred while sending message to queue.\n");
            out.println(e);
        }
    %>
    </body>
    </html>
    
  4. 동적 웹 프로젝트에 대해 Java 클래스 MyAMQPSender를 만듭니다. 이 자습서에서는 myAMQPPackage에 속하도록 패키지 이름을 지정합니다. MyAMQPSender.java에는 다음 코드를 사용합니다.

    package myAMQPPackage;
    
    import javax.jms.*;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.Hashtable;
    
    public class MyAMQPSender
    {
        
        private static Connection connection;
        private static Session sendSession;
        private static MessageProducer sender;
        private static Context context;
        
        
        public static void postMessages(String textMessage) throws Exception
        {
            try
            {
                init();
                sendTextMessage(textMessage);
                close();
            }
            catch (Exception e)
            {
                System.out.println("Exception: " + e);
            }
        }
    
        private static void sendTextMessage(String textMessage) throws JMSException 
        {
            TextMessage message = sendSession.createTextMessage();
            message.setText(textMessage);
            sender.send(message);
            System.out.println("Sent message with JMSMessageID = " + message.getJMSMessageID());
        }
        
        private static void init() 
        {
            try
            {
                // Configure JNDI environment
                Hashtable<String, String> env = new Hashtable<String, String>();
                env.put(Context.INITIAL_CONTEXT_FACTORY,
                "org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory");
                env.put(Context.PROVIDER_URL, "servicebus.properties");
                context = new InitialContext(env);
        
                // Lookup ConnectionFactory and Queue
                ConnectionFactory cf = (ConnectionFactory) context.lookup
                        ("SBCONNECTIONFACTORY");
                Destination queue = (Destination) context.lookup("QUEUE");
        
                // Create Connection
                connection = cf.createConnection();
        
                // Create sender-side Session and MessageProducer
                sendSession = connection.createSession(false,
                        Session.AUTO_ACKNOWLEDGE);
                sender = sendSession.createProducer(queue);
            }
            catch (Exception e)
            {
                System.out.println("Exception: " + e);
            }
        }
    
        private static void close() throws JMSException 
        {
            sender.close();
            sendSession.close();
            connection.close();
        }
    }
    
  5. 동적 웹 프로젝트 빌드 경로와 배포 어셈블리에 JMS용 Apache Qpid 클라이언트 라이브러리 패키지(MS Open Tech에서 제작) 라이브러리를 추가합니다.

    1. Eclipse의 프로젝트 탐색기 내에서 동적 웹 프로젝트의 상황에 맞는 메뉴를 열고 속성을 클릭합니다.

    2. Properties(속성) 대화 상자의 왼쪽 창에서 Java Build Path(Java 빌드 경로)를 클릭합니다.

    3. Java 빌드 경로 대화 상자에서 라이브러리 탭과 라이브러리 추가를 차례로 클릭하고 JMS용 Apache Qpid 클라이언트 라이브러리 패키지(MS Open Tech에서 제작)를 선택한 후에 다음을 클릭합니다.

    4. 라이브러리 추가 대화 상자에서 프로젝트 배포 어셈블리에 포함이 선택되어 있는지 확인합니다.

    5. 마침을 클릭하여 라이브러리 추가 대화 상자를 닫습니다.

    6. OK(확인)를 클릭하여 Properties(속성) 대화 상자를 닫습니다.

  6. 응용 프로그램의 Azure 프로젝트를 만듭니다. Eclipse의 프로젝트 탐색기에서 동적 웹 프로젝트의 상황에 맞는 메뉴를 열고 Azure, Azure용 패키지를 차례로 클릭합니다. Azure 배포 프로젝트 대화 상자의 필드에 값을 입력하고 마침을 클릭합니다. 이 대화 상자에 대한 자세한 지침은 Eclipse에서 Azure용 Hello World 응용 프로그램 만들기를 참조하세요.

  7. servicebus.properties 파일을 만듭니다. 원하는 로컬 폴더를 선택할 수 있습니다. 파일은 다음 단계에서 구성 요소로 추가됩니다.

    servicebus.properties에는 다음 내용을 포함합니다.

    # Register a ConnectionFactory in JNDI using the form:
    # connectionfactory.[jndiname] = [ConnectionURL]
    connectionfactory.SBCONNECTIONFACTORY = \
      amqps://owner:your_url_encoded_key@your_namespace.servicebus.windows.net
    
    # Register some queues in JNDI using the form:
    # queue.[jndiName] = [physicalName]
    queue.QUEUE = your_queue
    

    your_namespace 대신 실제 서비스 버스 네임스페이스 이름을 사용하고, your_url_encoded_key 대신 실제 서비스 버스 액세스 키를 사용합니다. servicebus.properties 내에서는 서비스 버스 키를 URL로 인코딩해야 합니다. URL 인코딩을 생성하는 방법 중 하나는 http://www.w3schools.com/tags/ref_urlencode.asp 웹 사이트를 사용하는 것입니다.

    your_queue 대신 작성한 큐의 이름을 사용합니다. 또한 발급자가 owner가 아닌 경우connectionfactory.SBCONNECTIONFACTORY 문자열에서도 발급자를 수정합니다.

    servicebus.properties에 대한 자세한 내용은 http://www.windowsazure.com/en-us/develop/java/how-to-guides/service-bus-amqp/를 참조하세요.

  8. 작업자 역할에 servicebus.properties를 구성 요소로 추가합니다.

    1. Eclipse의 프로젝트 탐색기에서 Azure 프로젝트를 확장하고 WorkerRole1의 상황에 맞는 메뉴를 연 다음 Azure, 구성 요소를 차례로 클릭합니다.

    2. 구성 요소 대화 상자에서 추가를 클릭합니다.

    3. 구성 요소 추가 대화 상자의 가져오기에서 소스 경로에 대해 파일을 클릭하고 servicebus.properties 파일을 선택합니다.

    4. 가져오기 방법으로는 copy를 사용합니다.

    5. 이름으로는 servicebus.properties를 사용합니다. 텍스트 상자를 클릭할 때 이 이름이 기본적으로 사용됩니다.

    6. 구성 요소 추가 대화 상자의 배포에서 방법으로는 copy를 사용합니다.

    7. 대상 디렉터리로는 %CATALINA_HOME%\bin을 사용합니다.

    8. 확인을 클릭하여 구성 요소 추가 대화 상자를 닫고 확인을 클릭하여 구성 요소 대화 상자를 닫습니다.

  9. 운영 체제로 Windows를 사용 중인 경우에는 Eclipse의 Azure 도구 모음에서 Azure 에뮬레이터에서 실행 아이콘을 클릭하여 계산 에뮬레이터에서 응용 프로그램을 실행할 수 있습니다. 계산 에뮬레이터에서 응용 프로그램이 실행되면 응용 프로그램의 localhost URL을 시작합니다. 메시지를 입력한 다음 메시지 보내기를 클릭하여 결과를 확인합니다.

  10. Azure에서 응용 프로그램을 실행하려면 Azure 도구 모음에서 Azure 클라우드에 게시 아이콘을 클릭한 다음 메시지에 따라 배포를 완료합니다. Azure에 배포하는 방법에 대한 자세한 내용은 Eclipse에서 Azure용 Hello World 응용 프로그램 만들기에서 확인할 수 있습니다. 응용 프로그램이 Azure 클라우드 서비스로 실행되고 나면 응용 프로그램의 URL을 시작합니다. 메시지를 입력한 다음 메시지 보내기를 클릭하여 결과를 확인합니다.

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft