Conexión de una aplicación Java con el agente Amazon MQ - Amazon MQ

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conexión de una aplicación Java con el agente Amazon MQ

Después de crear un agente de ActiveMQ en Amazon MQ, puede conectar su aplicación a él. Los siguientes ejemplos muestran cómo puede utilizar Java Message Service (JMS) para crear una conexión con el agente, crear una cola y enviar un mensaje. Para ver un ejemplo de Java completo y en funcionamiento, consulte Working Java Example.

Puede conectarse a los agentes de ActiveMQ mediante distintos clientes de ActiveMQ. Le recomendamos que utilice el cliente de ActiveMQ.

Requisitos previos

Habilitar atributos de VPC

Para asegurarse de poder acceder a su agente dentro de su VPC, debe habilitar los atributos enableDnsHostnames y enableDnsSupport de VPC. Para obtener más información, consulte el tema sobre soporte de DNS en su VPC en la Guía del usuario de Amazon VPC.

Habilitar las conexiones entrantes

  1. Inicie sesión en la consola de Amazon MQ.

  2. En la lista de corredores, elija el nombre de su corredor (por ejemplo, MyBroker).

  3. En la MyBrokerpágina, en la sección Conexiones, anote las direcciones y los puertos de la URL de la consola web del bróker y de los protocolos a nivel de cable.

  4. En la sección Details (Detalles), en Security and network (Seguridad y red), elija el nombre de su grupo de seguridad o .

    Aparecerá la página Security Groups (Grupos de seguridad) del panel de EC2.

  5. En la lista de grupos de seguridad, elija el grupo de seguridad.

  6. En la parte inferior de la página, elija Inbound (Entrante) y, a continuación, Edit (Editar).

  7. En el cuadro de diálogo Edit inbound rules (Editar reglas entrantes), agregue una regla para cada URL o punto de enlace que desee que sea accesible públicamente (en el ejemplo a continuación se muestra cómo hacerlo para una consola web de agente).

    1. Seleccione Add Rule (Agregar regla).

    2. En Type (Tipo), seleccione Custom TCP (TCP personalizada).

    3. Para Port Range (Rango de puertos), escriba el puerto de la consola web (8162).

    4. Para Source (Fuente), deje seleccionada la opción Custom (Personalizada) y, luego, escriba la dirección IP del sistema que desea que pueda acceder a la consola web (por ejemplo, 192.0.2.1).

    5. Seleccione Guardar.

      El agente ahora puede aceptar las conexiones entrantes.

Añadir dependencias de Java

Agregue los paquetes activemq-client.jar y activemq-pool.jar a la ruta de clases de Java. Los siguientes ejemplos muestran estas dependencias en el archivo pom.xml de un proyecto Maven.

<dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.16</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.15.16</version> </dependency> </dependencies>

Para obtener más información acerca de activemq-client.jar, consulte el tema sobre la configuración inicial en la documentación de Apache ActiveMQ.

importante

En el siguiente código de ejemplo, los productores y los consumidores se ejecutan en un único subproceso. Para sistemas de producción (o para probar la conmutación por error de instancias del agente), asegúrese de que sus productores y consumidores se ejecuten en anfitriones o subprocesos independientes.

Para crear un productor de mensajes y enviar un mensaje

  1. Cree una fábrica de conexiones JMS agrupadas para el productor de mensajes utilizando el punto de enlace de su agente y, a continuación, ejecute el método createConnection contra la fábrica.

    nota

    En el caso de un agente activo/en espera, Amazon MQ proporciona dos URL de la consola web de ActiveMQ, pero solo hay una URL activa a la vez. Del mismo modo, Amazon MQ proporciona dos puntos de enlace para cada protocolo de nivel de cable, pero solo hay un punto de enlace activo en cada par a la vez. Los sufijos -1 y -2 denotan un par redundante. Para obtener más información, consulte Broker Architecture).

    Para los puntos de enlace de protocolo de nivel de cable, puede permitir que la aplicación se conecte a cualquiera de los puntos de enlace mediante el transporte de conmutación por error.

    // Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Create a pooled connection factory. final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); pooledConnectionFactory.setMaxConnections(10); // Establish a connection for the producer. final Connection producerConnection = pooledConnectionFactory.createConnection(); producerConnection.start(); // Close all connections in the pool. pooledConnectionFactory.clear();
    nota

    Los productores de mensajes siempre deben usar la clase PooledConnectionFactory. Para obtener más información, consulte Usar siempre el grupo de conexiones.

  2. Cree una sesión, una cola con el nombre MyQueue y un productor de mensajes.

    // Create a session. final Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination producerDestination = producerSession.createQueue("MyQueue"); // Create a producer from the session to the queue. final MessageProducer producer = producerSession.createProducer(producerDestination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
  3. Cree la cadena de mensaje "Hello from Amazon MQ!" y, a continuación, envíe el mensaje.

    // Create a message. final String text = "Hello from Amazon MQ!"; TextMessage producerMessage = producerSession.createTextMessage(text); // Send the message. producer.send(producerMessage); System.out.println("Message sent.");
  4. Elimine al productor.

    producer.close(); producerSession.close(); producerConnection.close();

Para crear un consumidor de mensajes y recibir el mensaje

  1. Cree una fábrica de conexiones JMS para el productor de mensajes a través del punto de enlace de su agente y, a continuación, ejecute el método createConnection contra la fábrica.

    // Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Establish a connection for the consumer. final Connection consumerConnection = connectionFactory.createConnection(); consumerConnection.start();
    nota

    Los consumidores de mensajes nunca usan la clase PooledConnectionFactory. Para obtener más información, consulte Usar siempre el grupo de conexiones.

  2. Cree una sesión, una cola con el nombre MyQueue y un consumidor de mensajes.

    // Create a session. final Session consumerSession = consumerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination consumerDestination = consumerSession.createQueue("MyQueue"); // Create a message consumer from the session to the queue. final MessageConsumer consumer = consumerSession.createConsumer(consumerDestination);
  3. Comience a esperar los mensajes y reciba el mensaje cuando llegue.

    // Begin to wait for messages. final Message consumerMessage = consumer.receive(1000); // Receive the message when it arrives. final TextMessage consumerTextMessage = (TextMessage) consumerMessage; System.out.println("Message received: " + consumerTextMessage.getText());
    nota

    A diferencia AWS de los servicios de mensajería (como Amazon SQS), el consumidor está constantemente conectado con el intermediario.

  4. Cierre el consumidor, la sesión y la conexión.

    consumer.close(); consumerSession.close(); consumerConnection.close();