Documentation for a newer release is available. View Latest

Inicio rápido de JMS

A menudo es posible que desee configurar un par de conectores: uno para enviar y otro para recibir mensajes hacia/desde un destino. Esta guía explica cómo hacerlo usando JMS.

Para ejemplos más completos de uso de connectors para consumir y producir mensajes en general, vea Request-Reply Asíncrono

Paso 1: Agregar la dependencia connector-jms

La dependencia que debe agregar a su pom.xml es:

<dependency>
    <groupId>com.iconsolutions.ipf.core.connector</groupId>
    <artifactId>connector-jms</artifactId>
</dependency>

Si importa el Icon BOM, o usa el Icon BOM como padre, no es necesario proporcionar una versión por separado.

Paso 2: Configuración

La configuración del connector, en general, está fuertemente impulsada por configuración. La configuración nos permite especificar:

  • Nombres de colas/topics

  • Ajustes de consumidor/productor JMS

  • Parámetros de reinicio (en caso de fallo)

Aquí hay un ejemplo de un bloque de configuración para un par de sending y receiving connectors que conectaremos con nuestros `ConnectorTransport`s, para el sistema de reservas de un banco ficticio que presenta un topic de solicitud y otro de respuesta:

mybank.booking {
  producer { (1)
    queue = "mybank.booking.request" (2)
  }
  consumer { (3)
    queue = "mybank.booking.response" (4)
  }
}
Si produce a una cola de IBM MQ, el comportamiento predeterminado es producir un mensaje con un encabezado MQRFH2. Esto puede causar problemas si la aplicación que consume el mensaje es una aplicación no-JMS. En tales casos, especificar queue:///$<queueName>?targetClient=1 producirá el mensaje sin el encabezado MQRFH2. Así que en el ejemplo anterior, la propiedad de la cola sería "queue:///mybank.booking.request?targetClient=1" para producir mensajes sin un encabezado MQRFH2.
Para más información vea: www.ibm.com/docs/en/ibm-mq/9.3?topic=conversion-jms-message-types
1 Esto se conoce como la ruta raíz de configuración y se referenciará en el código. Indica dónde, en la configuración de la aplicación, buscar la configuración de este Send Connector Transport
2 La cola a la que enviar
3 La ruta raíz de configuración del consumidor JMS
4 La cola de la que recibir

Paso 2.1: Configuración común

De forma predeterminada, la configuración de JMS que especifique aquí heredará de los ajustes alpakka.jakarta-jms.consumer y alpakka.jakarta-jms.producer.

Esto significa que puede simplemente especificar ajustes de alpakka.jakarta-jms.consumer o alpakka.jakarta-jms.producer para configurar globalmente todos los ajustes de JMS para todos los consumidores y productores de JMS. Por ejemplo:

alpakka.jakarta-jms.consumer.acknowledge-mode = client
alpakka.jakarta-jms.producer.session-count = 10

Si, por ejemplo, un productor o consumidor JMS específico tiene ajustes diferentes, puede configurarse así:

alpakka.jakarta-jms.producer.session-count = 10
mybank.booking.producer.session-count = 1

La configuración anterior significa que todos los productores JMS, excepto el productor de booking, tendrán 10 instancias de JMS Session, y el productor de booking solo tendrá una.

La lista de opciones de configuración de JMS que pueden anularse puede encontrarse aquí (consumer) y aquí (producer).

Paso 3: Crear el Send Connector Transport

Aquí hay un ejemplo de cómo se puede crear un SendConnectorTransport para JMS:

var sendingTransport = JmsConnectorTransport.builder()
        .withName("accounts-booking-send-transport") (1)
        .withActorSystem(actorSystem)
        .withConfigRootPath("mybank.booking.producer") (2)
        .withConnectionFactory(connectionFactory) (3)
        .build();
1 Asigne un nombre significativo al ConnectorTransport
2 Usando la clave de configuración mybank.booking.producer definida en Paso 2
3 Proporcione aquí un ConnectionFactory de JMS

Paso 4: Crear el Receive Connector Transport

Aquí se muestra cómo crear un ConnectorTransport para recibir mensajes a través de JMS:

var receivingTransport = JmsConnectorTransport.builder()
        .withName("accounts-booking-send-transport") (1)
        .withActorSystem(actorSystem)
        .withConfigRootPath("mybank.booking.consumer") (2)
        .withConnectionFactory(connectionFactory) (3)
        .build();
1 Asigne un nombre significativo al ConnectorTransport
2 Usando la clave de configuración mybank.booking.consumer definida en Paso 2
3 Proporcione aquí un ConnectionFactory de JMS