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.
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í |