Documentación de referencia del conector AMQP 1.0 de mensajería reactiva
Esta guía es el complemento de la guía Introducción a AMQP 1.0. En ella se explica con más detalle la configuración y el uso del conector AMQP para la mensajería reactiva.
Esta documentación no cubre todos los detalles del conector. Consulte el sitio web de SmallRye Reactive Messaging para obtener más detalles. |
The AMQP connector allows Quarkus applications to send and receive messages using the AMQP 1.0 protocol. More details about the protocol can be found in the AMQP 1.0 specification. It’s important to note that AMQP 1.0 and AMQP 0.9.1 (implemented by RabbitMQ) are incompatible. Check Using RabbitMQ to get more details.
Extensión del conector AMQP
Para utilizar el conector, es necesario añadir la extensión quarkus-smallrye-reactive-messaging-amqp
.
Puede añadir la extensión a su proyecto utilizando:
quarkus extension add quarkus-smallrye-reactive-messaging-amqp
./mvnw quarkus:add-extension -Dextensions='quarkus-smallrye-reactive-messaging-amqp'
./gradlew addExtension --extensions='quarkus-smallrye-reactive-messaging-amqp'
O simplemente añada la siguiente dependencia a su proyecto:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-reactive-messaging-amqp</artifactId>
</dependency>
implementation("io.quarkus:quarkus-smallrye-reactive-messaging-amqp")
Una vez añadido a tu proyecto, puedes asignar canales a direcciones AMQP configurando el atributo connector
:
# Inbound
mp.messaging.incoming.[channel-name].connector=smallrye-amqp
# Outbound
mp.messaging.outgoing.[channel-name].connector=smallrye-amqp
Conexión automática de los conectores
Si tiene un solo conector en su classpath, puede omitir la configuración del atributo Esta autoadhesión se puede desactivar mediante:
|
Configuración del acceso al Broker AMQP
El conector AMQP se conecta a brokers AMQP 1.0 como Apache ActiveMQ o Artemis. Para configurar la ubicación y las credenciales del broker, añada las siguientes propiedades en la página application.properties
:
amqp-host=amqp (1)
amqp-port=5672 (2)
amqp-username=my-username (3)
amqp-password=my-password (4)
mp.messaging.incoming.prices.connector=smallrye-amqp (5)
1 | Configura el nombre de host del broker/router. Puedes hacerlo por canal (usando el atributo host ) o globalmente usando amqp-host |
2 | Configura el puerto del broker/router. Puedes hacerlo por canal (usando el atributo port ) o globalmente usando amqp-port . El valor por defecto es 5672 . |
3 | Configura el nombre de usuario del broker/router si es necesario. Puedes hacerlo por canal (usando el atributo username ) o globalmente usando amqp-username . |
4 | Configura la contraseña del broker/router si es necesario. Puedes hacerlo por canal (usando el atributo password ) o globalmente usando amqp-password . |
5 | Indica que el canal de precios debe ser gestionado por el conector AMQP |
En el modo dev y cuando se ejecutan pruebas, Dev Services for AMQP inicia automáticamente un broker AMQP.
Recepción de mensajes AMQP
Imaginemos que tu aplicación recibe Message<Double>
. Puede consumir la carga útil directamente:
package inbound;
import org.eclipse.microprofile.reactive.messaging.Incoming;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class AmqpPriceConsumer {
@Incoming("prices")
public void consume(double price) {
// process your price.
}
}
O bien, puede recuperar el Message<Double>:
package inbound;
import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Message;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.concurrent.CompletionStage;
@ApplicationScoped
public class AmqpPriceMessageConsumer {
@Incoming("prices")
public CompletionStage<Void> consume(Message<Double> price) {
// process your price.
// Acknowledge the incoming message, marking the AMQP message as `accepted`.
return price.ack();
}
}
Metadatos de entrada
Los mensajes procedentes de AMQP contienen una instancia de IncomingAmqpMetadata
en los metadatos.
Optional<IncomingAmqpMetadata> metadata = incoming.getMetadata(IncomingAmqpMetadata.class);
metadata.ifPresent(meta -> {
String address = meta.getAddress();
String subject = meta.getSubject();
boolean durable = meta.isDurable();
// Use io.vertx.core.json.JsonObject
JsonObject properties = meta.getProperties();
// ...
});
Deserialización
El conector convierte los mensajes AMQP entrantes en instancias de Reactive Messaging Message<T>. `T
depende del cuerpo del mensaje AMQP recibido.
The AMQP Type System defines the supported types.
Tipo de cuerpo AMQP | <T> |
---|---|
AMQP Value containing a AMQP Primitive Type |
el tipo Java correspondiente |
Valor AMQP utilizando el tipo |
|
Secuencia AMQP |
|
AMQP Data (con contenido binario) y el |
|
Datos AMQP con un |
|
Si envías objetos con este conector AMQP (conector de salida), se codifica como JSON y se envía como binario. La dirección content-type
está configurada como application/json
. Por lo tanto, puede reconstruir el objeto de la siguiente manera:
import io.vertx.core.json.JsonObject;
//
@ApplicationScoped
public static class Consumer {
List<Price> prices = new CopyOnWriteArrayList<>();
@Incoming("from-amqp") (1)
public void consume(JsonObject p) { (2)
Price price = p.mapTo(Price.class); (3)
prices.add(price);
}
public List<Price> list() {
return prices;
}
}
1 | Las instancias de Price son codificadas automáticamente en JSON por el conector |
2 | Puede recibirlo mediante un JsonObject |
3 | A continuación, puede reconstruir la instancia utilizando el método mapTo |
El método mapTo utiliza el mapeador Quarkus Jackson. Consulta esta guía para saber más sobre la configuración del mapeador.
|
Agradecimiento
When a Reactive Messaging Message associated with an AMQP Message is acknowledged, it informs the broker that the message has been accepted.
Gestión de fallos
Si un mensaje producido a partir de un mensaje AMQP es nacked, se aplica una estrategia de fallo. El conector AMQP soporta seis estrategias:
-
fail
- falla la aplicación; no se procesarán más mensajes AMQP (por defecto). El mensaje AMQP se marca como rechazado. -
accept
- this strategy marks the AMQP message as accepted. The processing continues ignoring the failure. Refer to the accepted delivery state documentation. -
release
- this strategy marks the AMQP message as released. The processing continues with the next message. The broker can redeliver the message. Refer to the released delivery state documentation. -
reject
- this strategy marks the AMQP message as rejected. The processing continues with the next message. Refer to the rejected delivery state documentation. -
modified-failed
- this strategy marks the AMQP message as modified and indicates that it failed (with thedelivery-failed
attribute). The processing continues with the next message, but the broker may attempt to redeliver the message. Refer to the modified delivery state documentation -
modified-failed-undeliverable-here
- this strategy marks the AMQP message as modified and indicates that it failed (with thedelivery-failed
attribute). It also indicates that the application cannot process the message, meaning that the broker will not attempt to redeliver the message to this node. The processing continues with the next message. Refer to the modified delivery state documentation
Envío de mensajes AMQP
Serialización
Cuando se envía un Message<T>
, el conector convierte el mensaje en un mensaje AMQP. La carga útil se convierte en el cuerpo del mensaje AMQP.
T |
Cuerpo del mensaje AMQP |
---|---|
tipos primitivos o |
Valor AMQP con la carga útil |
|
Valor AMQP utilizando el tipo AMQP correspondiente |
Datos AMQP utilizando un contenido binario. El |
|
|
Datos AMQP utilizando un contenido binario. No se ha establecido |
Cualquier otra clase |
La carga útil se convierte en JSON (utilizando un mapeador Json). El resultado se envuelve en AMQP Data usando un contenido binario. El |
Si la carga útil del mensaje no puede ser serializada a JSON, el mensaje es nacked.
Metadatos de salida
Cuando se envía Messages
, se puede añadir una instancia de OutgoingAmqpMetadata
para influir en cómo se va a enviar el mensaje a AMQP. Por ejemplo, puedes configurar los asuntos, las propiedades:
OutgoingAmqpMetadata metadata = OutgoingAmqpMetadata.builder()
.withDurable(true)
.withSubject("my-subject")
.build();
// Create a new message from the `incoming` message
// Add `metadata` to the metadata from the `incoming` message.
return incoming.addMetadata(metadata);
Nombres de direcciones dinámicas
A veces es conveniente seleccionar el destino de un mensaje de forma dinámica. En este caso, no debe configurar la dirección dentro del archivo de configuración de su aplicación, sino que debe utilizar los metadatos de salida para establecer la dirección.
Por ejemplo, puede enviar a una dirección dinámica en función del mensaje entrante:
String addressName = selectAddressFromIncommingMessage(incoming);
OutgoingAmqpMetadata metadata = OutgoingAmqpMetadata.builder()
.withAddress(addressName)
.withDurable(true)
.build();
// Create a new message from the `incoming` message
// Add `metadata` to the metadata from the `incoming` message.
return incoming.addMetadata(metadata);
Para poder establecer la dirección por mensaje, el conector utiliza un remitente anónimo. |
Agradecimiento
Por defecto, la Mensajería Reactiva Message
es reconocida cuando el broker reconoce el mensaje. Cuando se utilizan routers, este acuse de recibo puede no estar habilitado. En este caso, configure el atributo auto-acknowledgement
para que acuse el mensaje tan pronto como se haya enviado al router.
Si un mensaje AMQP es rechazado/liberado/modificado por el broker (o no puede ser enviado con éxito), el mensaje es nacked.
Configuración de la dirección AMQP
Puedes configurar la dirección AMQP utilizando el atributo address
:
mp.messaging.incoming.prices.connector=smallrye-amqp
mp.messaging.incoming.prices.address=my-queue
mp.messaging.outgoing.orders.connector=smallrye-amqp
mp.messaging.outgoing.orders.address=my-order-queue
Si el atributo address
no está establecido, el conector utiliza el nombre del canal.
Para utilizar una cola existente, debe configurar los atributos address
, container-id
y, opcionalmente, link-name
. Por ejemplo, si tienes un broker Apache Artemis configurado con:
<queues>
<queue name="people">
<address>people</address>
<durable>true</durable>
<user>artemis</user>
</queue>
</queues>
Necesita la siguiente configuración:
mp.messaging.outgoing.people.connector=smallrye-amqp
mp.messaging.outgoing.people.durable=true
mp.messaging.outgoing.people.address=people
mp.messaging.outgoing.people.container-id=people
Es posible que tenga que configurar el atributo link-name
, si el nombre de la cola no es el nombre del canal:
mp.messaging.outgoing.people-out.connector=smallrye-amqp
mp.messaging.outgoing.people-out.durable=true
mp.messaging.outgoing.people-out.address=people
mp.messaging.outgoing.people-out.container-id=people
mp.messaging.outgoing.people-out.link-name=people
Para utilizar una cola de MULTICAST
, es necesario proporcionar el FQQN (nombre de cola totalmente calificado) en lugar de sólo el nombre de la cola:
mp.messaging.outgoing.people-out.connector=smallrye-amqp
mp.messaging.outgoing.people-out.durable=true
mp.messaging.outgoing.people-out.address=foo
mp.messaging.outgoing.people-out.container-id=foo
mp.messaging.incoming.people-out.connector=smallrye-amqp
mp.messaging.incoming.people-out.durable=true
mp.messaging.incoming.people-out.address=foo::bar # Note the syntax: address-name::queue-name
mp.messaging.incoming.people-out.container-id=bar
mp.messaging.incoming.people-out.link-name=people
Puede encontrar más detalles sobre el modelo de direcciones AMQP en la documentación de Artemis.
Modelo de ejecución y procesamiento por bloqueo
La mensajería reactiva invoca su método en un hilo de E/S. Consulta la documentación de la Arquitectura Reactiva de Quarkus para más detalles sobre este tema. Pero, a menudo necesitas combinar la Mensajería Reactiva con el procesamiento de bloqueo, como las interacciones con la base de datos. Para ello, es necesario utilizar la anotación @Blocking
indicando que el procesamiento es de bloqueo y no debe ser ejecutado en el hilo de llamada.
Por ejemplo, el siguiente código ilustra cómo puede almacenar las cargas útiles entrantes en una base de datos utilizando Hibernate con Panache:
import io.smallrye.reactive.messaging.annotations.Blocking;
import org.eclipse.microprofile.reactive.messaging.Incoming;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.transaction.Transactional;
@ApplicationScoped
public class PriceStorage {
@Incoming("prices")
@Transactional
public void store(int priceInUsd) {
Price price = new Price();
price.value = priceInUsd;
price.persist();
}
}
Hay 2 anotaciones en
Tienen el mismo efecto. Por lo tanto, puede utilizar ambos. El primero proporciona un ajuste más fino, como el grupo de trabajadores a utilizar y si preserva el orden. El segundo, utilizado también con otras características reactivas de Quarkus, utiliza el grupo de trabajadores por defecto y preserva el orden. |
@RunOnVirtualThread
For running the blocking processing on Java virtual threads, see the Quarkus Virtual Thread support with Reactive Messaging documentation. |
@Transactional
Si su método está anotado con |
Personalización del cliente AMQP subyacente
El conector utiliza el cliente AMQP de Vert.x por debajo. Puedes encontrar más detalles sobre este cliente en el sitio web de Vert.x.
Puede personalizar la configuración del cliente subyacente produciendo una instancia de AmqpClientOptions
de la siguiente manera:
@Produces
@Identifier("my-named-options")
public AmqpClientOptions getNamedOptions() {
// You can use the produced options to configure the TLS connection
PemKeyCertOptions keycert = new PemKeyCertOptions()
.addCertPath("./tls/tls.crt")
.addKeyPath("./tls/tls.key");
PemTrustOptions trust = new PemTrustOptions().addCertPath("./tlc/ca.crt");
return new AmqpClientOptions()
.setSsl(true)
.setPemKeyCertOptions(keycert)
.setPemTrustOptions(trust)
.addEnabledSaslMechanism("EXTERNAL")
.setHostnameVerificationAlgorithm("")
.setConnectTimeout(30000)
.setReconnectInterval(5000)
.setContainerId("my-container");
}
Esta instancia se recupera y se utiliza para configurar el cliente utilizado por el conector. Es necesario indicar el nombre del cliente utilizando el atributo client-options-name
:
mp.messaging.incoming.prices.client-options-name=my-named-options
Informes de salud
Si utilizas el conector AMQP con la extensión quarkus-smallrye-health
, contribuye a las sondas de disponibilidad y vida. El conector AMQP informa de la disponibilidad y la capacidad de respuesta de cada canal gestionado por el conector. Por el momento, el conector AMQP utiliza la misma lógica para las comprobaciones de disponibilidad y vida.
Para desactivar los informes de salud, establezca el atributo health-enabled
para el canal en falso. En el lado de entrada (recepción de mensajes de AMQP), la comprobación verifica que el receptor está unido al broker. En el lado de salida (envío de registros a AMQP), la comprobación verifica que el remitente está unido al broker.
Note that a message processing failures nacks the message, which is then handled by the failure-strategy
. It is the responsibility of the failure-strategy
to report the failure and influence the outcome of the checks. The fail
failure strategy reports the failure, and so the check will report the fault.
Uso de RabbitMQ
Este conector es para AMQP 1.0. RabbitMQ implementa AMQP 0.9.1. RabbitMQ no proporciona AMQP 1.0 por defecto, pero existe un plugin para ello. Para utilizar RabbitMQ con este conector, active y configure el plugin AMQP 1.0.
A pesar de la existencia del plugin, algunas características de AMQP 1.0 no funcionan con RabbitMQ. Por lo tanto, recomendamos las siguientes configuraciones.
Para recibir mensajes de RabbitMQ:
-
Establecer la durabilidad en falso
mp.messaging.incoming.prices.connector=smallrye-amqp
mp.messaging.incoming.prices.durable=false
Para enviar mensajes a RabbitMQ:
-
establecer la dirección de destino (no se admiten remitentes anónimos)
-
establecer
use-anonymous-sender
en falso
mp.messaging.outgoing.generated-price.connector=smallrye-amqp
mp.messaging.outgoing.generated-price.address=prices
mp.messaging.outgoing.generated-price.use-anonymous-sender=false
Como consecuencia, no es posible cambiar el destino dinámicamente (utilizando los metadatos del mensaje) cuando se utiliza RabbitMQ.
Recepción de eventos en la nube
El conector AMQP soporta Cloud Events. Cuando el conector detecta un Cloud Events estructurado o binario, añade un IncomingCloudEventMetadata<T>
en los metadatos del Message
. IncomingCloudEventMetadata
contiene accesos a los atributos obligatorios y opcionales del Cloud Event.
Si el conector no puede extraer los metadatos del evento en la nube, envía el mensaje sin los metadatos.
Para obtener más información sobre la recepción de eventos de la nube, consulte Recepción de eventos de la nube en la documentación de SmallRye Reactive Messaging.
Envío de eventos en la nube
El conector AMQP es compatible con Cloud Events. El conector envía el registro de salida como Cloud Events si:
-
los metadatos del mensaje contienen una instancia de
io.smallrye.reactive.messaging.ce.OutgoingCloudEventMetadata
, -
la configuración del canal define los atributos
cloud-events-type
ycloud-events-source
.
Para obtener más información sobre el envío de eventos de nube, consulte Envío de eventos de nube en la documentación de SmallRye Reactive Messaging.
Referencia de la configuración del conector AMQP
Configuración específica de Quarkus
Configuration property fixed at build time - All other configuration properties are overridable at runtime
Type |
Default |
|
---|---|---|
If Dev Services for AMQP has been explicitly enabled or disabled. Dev Services are generally enabled by default, unless there is an existing configuration present. For AMQP, Dev Services starts a broker unless Environment variable: Show more |
boolean |
|
Optional fixed port the dev service will listen to. If not defined, the port will be chosen randomly. Environment variable: Show more |
int |
|
The image to use. Note that only ActiveMQ Artemis images are supported. Specifically, the image repository must end with Check the activemq-artemis-broker on Quay page to find the available versions. Environment variable: Show more |
string |
|
The value of the Environment variable: Show more |
string |
|
Indicates if the AMQP broker managed by Quarkus Dev Services is shared. When shared, Quarkus looks for running containers using label-based service discovery. If a matching container is found, it is used, and so a second one is not started. Otherwise, Dev Services for AMQP starts a new container. The discovery uses the Container sharing is only used in dev mode. Environment variable: Show more |
boolean |
|
The value of the This property is used when you need multiple shared AMQP brokers. Environment variable: Show more |
string |
|
Environment variables that are passed to the container. Environment variable: Show more |
|
Configuración del canal de entrada
Atributo (alias) | Descripción | Obligatorio | Por defecto |
---|---|---|---|
address |
La dirección AMQP. Si no se establece, se utiliza el nombre del canal Type: string |
falso |
|
auto-acknowledgement |
Si los mensajes AMQP recibidos deben ser acusados de recibo Type: boolean |
falso |
|
broadcast |
Si los mensajes AMQP recibidos deben ser enviados a múltiples suscriptores Type: boolean |
falso |
|
capabilities |
A comma-separated list of capabilities proposed by the sender or receiver client. Type: string |
falso |
|
client-options-name (amqp-client-options-name) |
El nombre del grano de opción del cliente AMQP utilizado para personalizar la configuración del cliente AMQP Type: string |
falso |
|
cloud-events |
Activa (por defecto) o desactiva el soporte de Cloud Event. Si se habilita en un canal de entrada, el conector analiza los registros entrantes e intenta crear metadatos de Cloud Event. Si se habilita en un canal saliente, el conector envía los mensajes salientes como Cloud Event si el mensaje incluye metadatos Cloud Event. Type: boolean |
falso |
|
connect-timeout (amqp-connect-timeout) |
El tiempo de espera de la conexión en milisegundos Type: int |
falso |
|
container-id |
El id del contenedor AMQP Type: string |
falso |
|
durable |
Si la suscripción AMQP es duradera Type: boolean |
falso |
|
failure-strategy |
Especifica la estrategia de fallo a aplicar cuando un mensaje producido a partir de un mensaje AMQP es nacked. Los valores aceptados son Type: string |
falso |
|
health-timeout |
El número máximo de segundos que hay que esperar para determinar si la conexión con el corredor sigue establecida para la comprobación de disponibilidad. Después de ese umbral, la comprobación se considera fallida. Type: int |
falso |
|
host (amqp-host) |
El nombre de host del broker Type: string |
falso |
|
link-name |
El nombre del enlace. Si no se establece, se utiliza el nombre del canal. Type: string |
falso |
|
password (amqp-password) |
La contraseña utilizada para autenticarse en el broker Type: string |
falso |
|
port (amqp-port) |
El puerto del corredor Type: int |
falso |
|
reconnect-attempts (amqp-reconnect-attempts) |
El número de intentos de reconexión Type: int |
falso |
|
reconnect-interval (amqp-reconnect-interval) |
El intervalo en segundos entre dos intentos de reconexión Type: int |
falso |
|
sni-server-name (amqp-sni-server-name) |
Si se establece, anula explícitamente el nombre de host que se utilizará para el nombre del servidor TLS SNI Type: string |
falso |
|
selector |
Sets a message selector. This attribute is used to define an Type: string |
falso |
|
tracing-enabled |
Si el rastreo está activado (por defecto) o desactivado Type: boolean |
falso |
|
use-ssl (amqp-use-ssl) |
Si la conexión AMQP utiliza SSL/TLS Type: boolean |
falso |
|
username (amqp-username) |
El nombre de usuario utilizado para autenticarse en el broker Type: string |
falso |
|
virtual-host (amqp-virtual-host) |
Si se establece, configure el valor del nombre de host utilizado para la trama abierta AMQP de la conexión y el nombre del servidor SNI TLS (si se utiliza TLS) Type: string |
falso |
Configuración del canal de salida
Atributo (alias) | Descripción | Obligatorio | Por defecto |
---|---|---|---|
address |
La dirección AMQP. Si no se establece, se utiliza el nombre del canal Type: string |
falso |
|
capabilities |
A comma-separated list of capabilities proposed by the sender or receiver client. Type: string |
falso |
|
client-options-name (amqp-client-options-name) |
El nombre del grano de opción del cliente AMQP utilizado para personalizar la configuración del cliente AMQP Type: string |
falso |
|
cloud-events |
Activa (por defecto) o desactiva el soporte de Cloud Event. Si se habilita en un canal de entrada, el conector analiza los registros entrantes e intenta crear metadatos de Cloud Event. Si se habilita en un canal saliente, el conector envía los mensajes salientes como Cloud Event si el mensaje incluye metadatos Cloud Event. Type: boolean |
falso |
|
cloud-events-data-content-type (cloud-events-default-data-content-type) |
Configura el atributo Type: string |
falso |
|
cloud-events-data-schema (cloud-events-default-data-schema) |
Configura el atributo Type: string |
falso |
|
cloud-events-insert-timestamp (cloud-events-default-timestamp) |
Whether the connector should insert automatically the Type: boolean |
falso |
|
cloud-events-mode |
El modo de eventos en la nube ( Type: string |
falso |
|
cloud-events-source (cloud-events-default-source) |
Configura el atributo Type: string |
falso |
|
cloud-events-subject (cloud-events-default-subject) |
Configura el atributo Type: string |
falso |
|
cloud-events-type (cloud-events-default-type) |
Configura el atributo Type: string |
falso |
|
connect-timeout (amqp-connect-timeout) |
El tiempo de espera de la conexión en milisegundos Type: int |
falso |
|
container-id |
El id del contenedor AMQP Type: string |
falso |
|
credit-retrieval-period |
El período (en milisegundos) entre dos intentos de recuperar los créditos concedidos por el corredor. Este tiempo se utiliza cuando el emisor se queda sin créditos. Type: int |
falso |
|
durable |
Si los mensajes AMQP enviados se marcan como duraderos Type: boolean |
falso |
|
health-timeout |
El número máximo de segundos que hay que esperar para determinar si la conexión con el corredor sigue establecida para la comprobación de disponibilidad. Después de ese umbral, la comprobación se considera fallida. Type: int |
falso |
|
host (amqp-host) |
El nombre de host del broker Type: string |
falso |
|
link-name |
El nombre del enlace. Si no se establece, se utiliza el nombre del canal. Type: string |
falso |
|
merge |
Si el conector debe permitir múltiples flujos ascendentes Type: boolean |
falso |
|
password (amqp-password) |
La contraseña utilizada para autenticarse en el broker Type: string |
falso |
|
port (amqp-port) |
El puerto del corredor Type: int |
falso |
|
reconnect-attempts (amqp-reconnect-attempts) |
El número de intentos de reconexión Type: int |
falso |
|
reconnect-interval (amqp-reconnect-interval) |
El intervalo en segundos entre dos intentos de reconexión Type: int |
falso |
|
sni-server-name (amqp-sni-server-name) |
Si se establece, anula explícitamente el nombre de host que se utilizará para el nombre del servidor TLS SNI Type: string |
falso |
|
tracing-enabled |
Si el rastreo está activado (por defecto) o desactivado Type: boolean |
falso |
|
ttl |
The time-to-live of the sent AMQP messages. 0 to disable the TTL Type: long |
falso |
|
use-anonymous-sender |
Whether the connector should use an anonymous sender. Default value is Type: boolean |
falso |
|
use-ssl (amqp-use-ssl) |
Si la conexión AMQP utiliza SSL/TLS Type: boolean |
falso |
|
username (amqp-username) |
El nombre de usuario utilizado para autenticarse en el broker Type: string |
falso |
|
virtual-host (amqp-virtual-host) |
Si se establece, configure el valor del nombre de host utilizado para la trama abierta AMQP de la conexión y el nombre del servidor SNI TLS (si se utiliza TLS) Type: string |
falso |
Conditionally configure channels
You can configure the channels using a specific profile. Thus, the channels are only configured (and added to the application) when the specified profile is enabled.
To achieve this, you need:
-
Prefix the
mp.messaging.[incoming|outgoing].$channel
entries with%my-profile
such as%my-profile.mp.messaging.[incoming|outgoing].$channel.key=value
-
Use the
@IfBuildProfile("my-profile")
on the CDI beans containing@Incoming(channel)
and@Outgoing(channel)
annotations that need only to be enabled when the profile is enabled.
Note that reactive messaging verifies that the graph is complete. So, when using such a conditional configuration, ensure the application works with and without the profile enabled.
Note that this approach can also be used to change the channel configuration based on a profile.