JMS Inicio rápido

A menudo puede desear configurar un par de conectores: uno para enviar y otro para recibir mensajes de/a un destino. Esta guía explica cómo hacer esto utilizando JMS.

Para ejemplos más completos sobre el uso de conectores para consumir y producir mensajes en general, consulte Solicitud-Respuesta Asincrónica.

Paso 1: Agregue connector-jms dependencia

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

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

Si está importando el Icon BOM, o utilizando el Icon BOM como padre, no es necesario proporcionar una versión separada.

Paso 2: Configuración

Configuración del conector-en general-está fuertemente impulsado por la configuración. La configuración nos permite especificar:

  • Nombres de Cola/Tema

  • Configuración del consumidor/productor JMS

  • Reiniciar configuraciones (en caso de fallo)

Aquí tiene un ejemplo de un bloque de configuración para un par de conectores de envío y recepción que conectaremos a nuestro `ConnectorTransport`s, para el sistema de reservas de un banco ficticio que presenta un tema de solicitud y respuesta:

mybank.booking {
  producer { (1)
    queue = "mybank.booking.request" (2)
  }
  consumer { (3)
    queue = "mybank.booking.response" (4)
  }
}
Si se produce a un IBM MQ cola, el comportamiento predeterminado es producir un mensaje con un MQRFH2 encabezado. Esto puede causar problemas si la aplicación que consume el mensaje es una no-JMS aplicación. En tales casos, especificar queue:///$<queueName>? targetClient=1 producirá el mensaje sin el MQRFH2 encabezado. Así que en el ejemplo anterior, la propiedad de la cola sería "queue:///mybank.booking.request?targetClient=1" para producir mensajes sin un MQRFH2 header.
Para más información, consulte:https://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 hará referencia en el código. Indica dónde en la aplicación configuración para buscar esto Send Connector Configuraciones de transporte
2 La cola a la que enviar
3 La ruta raíz de configuración a la JMS consumidor
4 La cola para recibir de

Paso 2. 1: Configuración Común

Por defecto-el JMS la configuración que usted especifique aquí volverá a la alpakka.jakarta-jms.consumer y `alpakka.jakarta-jms.producer`ajustes.

Lo que esto significa es que usted puede simplemente especificar alpakka.jakarta-jms.consumer or alpakka.jakarta-jms.producer configuraciones para globalmente configure todo JMS configuraciones para todos JMS consumidores y productores. Por ejemplo:

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

Si-por ejemplo-uno específico JMS El productor o consumidor tiene diferentes configuraciones, puede ser configurado de la siguiente manera:

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

La configuración anterior significa que todos JMS productores-aparte del productor de reservas-tendrá 10 JMS Sesión instancias, y el productor de reservas solo tendrá una.

La lista de JMS Las opciones de configuración que pueden ser anuladas se pueden encontrar aquí(consumidor) y aquí(productor).

Paso 3: Crear Send Connector Transporte

Aquí tiene un ejemplo de cómo un SendConnectorTransport puede ser creado para JMS:

var sendingTransport = JmsConnectorTransport.builder()
        .withName("accounts-booking-send-transport") (1)
        .withActorSystem(actorSystem)
        .withConfigRootPath("mybank.booking.producer") (2)
        .withConnectionFactory(connectionFactory) (3)
        .build();
1 Dé el ConnectorTransport un nombre significativo
2 Usando el mybank.booking.producer clave de configuración definida en Step 2
3 Proporcione un JMS jakarta.ee/specifications/messaging/3. 1/apidocs/jakarta.messaging/jakarta/jms/connectionfactory[ConnectionFactory] aquí

Paso 4: Crear Receive Connector Transporte

Aquí está 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 Dé el ConnectorTransport un nombre significativo
2 Usando el mybank.booking.consumer clave de configuración definida en Step 2
3 Proporcione un JMS jakarta.ee/specifications/messaging/3. 1/apidocs/jakarta.messaging/jakarta/jms/connectionfactory[ConnectionFactory] aquí