¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo

Uso de JMS con AMQP 1.0 en Azure con Eclipse

Actualizado: marzo de 2015

El estándar Advanced Message Queuing Protocol (AMQP) 1.0 es un protocolo de mensajería de conexión eficiente y confiable que permite compilar aplicaciones de mensajería sólidas entre plataformas. Se ha agregado compatibilidad con AMQP 1.0 al Bus de servicio de Azure como una característica de vista previa. Los pasos siguientes muestran cómo usar el servicio Java Message Service (JMS) con AMQP 1.0 en una aplicación básica de JSP implementada en Azure mediante el kit de herramientas de Azure para Eclipse (de Microsoft Open Technologies).

  1. Cree un proyecto web dinámico: En el menú de Eclipse, haga clic en File, New y, a continuación, en Dynamic Web Project. (Hay pasos más detallados para crear un proyecto web dinámico disponibles en Creación de una aplicación Hola a todos para Azure en Eclipse).

  2. Agregue un archivo JSP denominado index.jsp a su proyecto web dinámico. Utilice el código siguiente para 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. Agregue un archivo JSP denominado sendMessages.jsp a su proyecto web dinámico. Utilice el código siguiente para 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. Cree una clase de Java, MyAMQPSender, para el proyecto web dinámico. Para los fines de este tutorial, el nombre del paquete que pertenece a myAMQPPackage. Utilice el siguiente código para 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. Agregue la biblioteca del Paquete para bibliotecas cliente de Apache Qpid para JMS (de MS Open Tech) al ensamblado de implementación y la ruta de acceso de compilación del proyecto web dinámico:

    1. En el Explorador de proyectos de Eclipse, abra el menú contextual para el proyecto web dinámico y haga clic en Properties (Propiedades).

    2. En el panel izquierdo del diálogo Properties, haga clic en Java Build Path.

    3. En el cuadro de diálogo Java Build Path (Ruta de acceso de compilación de Java), haga clic en la pestaña Libraries (Bibliotecas), haga clic Add Library (Agregar biblioteca), seleccione Package for Apache Qpid Client Libraries for JMS (by MS Open Tech) (Paquete para bibliotecas cliente de Apache Qpid para JMS (de MS Open Tech)) y, a continuación, haga clic en Next (Siguiente).

    4. En el cuadro de diálogo Add Library (Agregar biblioteca), asegúrese de que está activa la opción Include in the project deployment assembly (Incluir en el ensamblado de la implementación del proyecto).

    5. Haga clic en Finish (Finalizar) para cerrar el diálogo Add Library (Agregar biblioteca).

    6. Haga clic en OK para cerrar el diálogo Properties.

  6. Cree un proyecto de Azure para su aplicación: En el Explorador de proyectos de Eclipse, abra el menú contextual para el proyecto web dinámico, haga clic en Azure y, a continuación, haga clic en Package for Azure (Paquete para Azure). Proporcione valores para los campos del cuadro de diálogo Azure Deployment Project (Proyecto de implementación de Azure) y haga clic en Finish (Finalizar). (Para obtener instrucciones detalladas sobre este cuadro de diálogo, vea Creación de una aplicación Hola a todos para Azure en Eclipse).

  7. Cree un archivo denominado servicebus.properties. Puede seleccionar cualquier carpeta local, el archivo se agregará como un componente en el paso siguiente.

    Utilice el siguiente contenido para 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
    

    Utilice el nombre de espacio de nombres del Bus de servicio en lugar de your_namespace y use su clave de acceso del Bus de servicio en lugar de your_url_encoded_key. Tenga en cuenta que dentro de servicebus.properties, la clave del Bus de servicio debe tener codificación URL. Una técnica para crear una codificación URL es recurrir al sitio web http://www.w3schools.com/tags/ref_urlencode.asp.

    Utilice el nombre de la cola que ha creado en lugar de your_queue. Además, si el emisor no es el propietario, modifíquelo también en la cadena connectionfactory.SBCONNECTIONFACTORY.

    Para obtener más información sobre servicebus.properties, consulte http://azure.microsoft.com/es-es/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/.

  8. Agregue servicebus.properties como un componente a su rol de trabajo:

    1. En el Explorador de proyectos de Eclipse, expanda el proyecto de Azure, abra el menú contextual de WorkerRole1, haga clic en Azure y, a continuación, haga clic en Components (Componentes).

    2. En el cuadro de diálogo Components (Componentes), haga clic en Add (Agregar).

    3. En el cuadro de diálogo Add Component (Agregar componente) bajo Import (Importar), para From path (Desde la ruta de acceso), haga clic en File (Archivo) y seleccione el archivo servicebus.properties.

    4. Como método para Import (importar), utilice copy (copiar).

    5. Para As name (Como nombre), utilice servicebus.properties, que será el valor predeterminado al hacer clic en el cuadro de texto.

    6. En el cuadro de diálogo Add Component (Agregar componente) bajo Deploy (Implementar), para Method (Método), utilice copy (copiar).

    7. Para To directory (Al directorio), utilice %CATALINA_HOME%\bin.

    8. Haga clic en OK (Aceptar) para cerrar el cuadro de diálogo Add Component (Agregar componente) y, a continuación, haga clic en OK (Aceptar) para cerrar el cuadro de diálogo Components (Componentes).

  9. Si utiliza Windows como sistema operativo, puede ejecutar la aplicación en el emulador de proceso haciendo clic en el icono Run in Azure Emulator (Ejecutar en el Emulador de Azure) en la barra de herramientas de Azure en Eclipse. Cuando la aplicación se haya ejecutado en el emulador de proceso, vaya a la dirección URL de localhost de la aplicación. Escriba un mensaje y, a continuación, haga clic en Send Message (Enviar mensaje) para ver el resultado.

  10. Para ejecutar la aplicación en Azure, haga clic en el icono Publish to Azure Cloud (Publicar en la nube de Azure) en la barra de herramientas de Azure y siga las indicaciones para completar la implementación. (Puede obtener más información acerca de la implementación en Azure en Creación de una aplicación Hola a todos para Azure en Eclipse). Después de que la aplicación se haya ejecutado como un servicio de nube de Azure, vaya a la dirección URL de la aplicación. Escriba un mensaje y, a continuación, haga clic en Send Message (Enviar mensaje) para ver el resultado.

Mostrar:
© 2015 Microsoft