The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
Edit this Page

Documentación de referencia del conector AMQP 1.0 de mensajería reactiva

Esta guía es la compañera de la Introducción a AMQP 1.0. Explica con más detalle la configuración y el uso del conector AMQP para mensajería reactiva.

Esta documentación no cubre todos los detalles del conector. Consulte la página web de SmallRye Reactive Messaging para más detalles.

El conector AMQP permite a las aplicaciones Quarkus enviar y recibir mensajes utilizando el protocolo AMQP 1.0. Puede encontrar más detalles sobre el protocolo en la especificación AMQP 1.0. Es importante tener en cuenta que AMQP 1.0 y AMQP 0.9.1 (implementado por RabbitMQ) son incompatibles. Consulte Uso de RabbitMQ para obtener más detalles.

Extensión del conector AMQP

Para utilizar el conector, debe añadir la extensión quarkus-messaging-amqp .

Puede añadir la extensión a su proyecto utilizando:

CLI
quarkus extension add quarkus-messaging-amqp
Maven
./mvnw quarkus:add-extension -Dextensions='quarkus-messaging-amqp'
Gradle
./gradlew addExtension --extensions='quarkus-messaging-amqp'

O simplemente añada la siguiente dependencia a su proyecto:

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-messaging-amqp</artifactId>
</dependency>
build.gradle
implementation("io.quarkus:quarkus-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 único conector en su classpath, puede omitir la configuración del atributo connector. Quarkus asocia automáticamente los canales huérfanos al conector (único) que se encuentra en el classpath. Los canales huérfanos son canales salientes sin un consumidor descendente o canales entrantes sin un productor ascendente.

Esta autoadhesión se puede desactivar mediante:

quarkus.messaging.auto-connector-attachment=false

Configuración del acceso al Broker AMQP

El conector AMQP conecta con 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 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, Servicios de desarrollo para AMQP inicia automáticamente un broker AMQP.

Recepción de mensajes AMQP

Imaginemos que su 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 Mensajería Reactiva Message<T>. T depende del cuerpo del Mensaje AMQP recibido.

El sistema de tipos AMQP define los tipos soportados.

Tipo de cuerpo AMQP <T>

Valor AMQP que contiene un tipo primitivo AMQP

el tipo Java correspondiente

Valor AMQP utilizando el tipo Binary

byte[]

Secuencia AMQP

List

AMQP Data (con contenido binario) y el content-type está configurado como application/json

JsonObject

Datos AMQP con un content-type

byte[]

Si envía objetos con este conector AMQP (conector de salida), se codifica como JSON y se envía como binario. El content-type se establece en 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

Cuando un mensaje de Mensajería Reactiva asociado a un Mensaje AMQP es reconocido, informa al broker que el mensaje ha sido aceptado.

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 admite 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 - esta estrategia marca el mensaje AMQP como aceptado. El procesamiento continúa ignorando el fallo. Consulte la documentación sobre el estado de entrega aceptado.

  • release - esta estrategia marca el mensaje AMQP como liberado. El procesamiento continúa con el siguiente mensaje. El broker puede volver a entregar el mensaje. Consulte la documentación sobre el estado de entrega liberado.

  • reject - esta estrategia marca el mensaje AMQP como rechazado. El procesamiento continúa con el siguiente mensaje. Consulte la documentación sobre el estado de entrega rechazado.

  • modified-failed - esta estrategia marca el mensaje AMQP como modificado e indica que ha fallado (con el atributo delivery-failed). El procesamiento continúa con el siguiente mensaje, pero el broker puede intentar volver a entregar el mensaje. Consulte la documentación sobre el estado de entrega modificado

  • modified-failed-undeliverable-here - esta estrategia marca el mensaje AMQP como modificado e indica que ha fallado (con el atributo delivery-failed). También indica que la aplicación no puede procesar el mensaje, lo que significa que el broker no intentará volver a entregar el mensaje a este nodo. El procesamiento continúa con el siguiente mensaje. Consulte la documentación sobre el estado de entrega modificado

Envío de mensajes AMQP

Serialización

Al enviar 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 String

Valor AMQP con la carga útil

Instant o UUID

Valor AMQP utilizando el tipo AMQP correspondiente

JsonObject o JsonArray

Datos AMQP utilizando un contenido binario. El content-type está configurado como application/json

io.vertx.mutiny.core.buffer.Buffer

Datos AMQP utilizando un contenido binario. No se ha establecido content-type

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 content-type se establece en application/json

Si la carga útil del mensaje no puede ser serializada a JSON, el mensaje es nacked.

Metadatos de salida

Al enviar Messages, 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 temas y 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 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 enrutadores, puede que este acuse de recibo no esté habilitado. En este caso, configure el atributo auto-acknowledgement para que reconozca el mensaje tan pronto como se haya enviado al enrutador.

Si un mensaje AMQP es rechazado/liberado/modificado por el broker (o no puede ser enviado con éxito), el mensaje es nacked.

Presión trasera y créditos

La contrapresión se gestiona mediante créditos AMQP. El conector de salida sólo solicita la cantidad de créditos permitidos. Cuando la cantidad de créditos llega a 0, espera (de forma no bloqueante) hasta que el broker concede más créditos al remitente AMQP.

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 tiene un corredor 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 I/O. Consulte la documentación de la Arquitectura Reactiva de Quarkus para más detalles sobre este tema. Pero, a menudo necesita combinar la Mensajería Reactiva con el procesamiento de bloqueo, como las interacciones con la base de datos. Para ello, necesita utilizar la anotación @Blocking indicando que el procesamiento es bloqueante y no debe ejecutarse 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 @Blocking:

  1. io.smallrye.reactive.messaging.annotations.Blocking

  2. io.smallrye.common.annotation.Blocking

Tienen el mismo efecto. Por lo tanto, puede utilizar ambos. El primero proporciona un ajuste más fino, como la reserva de trabajadores a utilizar y si preserva el orden. El segundo, utilizado también con otras características reactivas de Quarkus, utiliza el pool de trabajadores por defecto y preserva el orden.

@RunOnVirtualThread

Para ejecutar el procesamiento de bloqueo en hilos virtuales Java, véase la documentación sobre el soporte de hilos virtuales de Quarkus con mensajería reactiva.

@Transactional

Si su método está anotado con @Transactional, se considerará automáticamente bloqueante, incluso si el método no está anotado con @Blocking.

Personalización del cliente AMQP subyacente

El conector utiliza el cliente AMQP de Vert.x por debajo. Puede encontrar más detalles sobre este cliente en la página 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("") // Disables the hostname verification. Defaults is "HTTPS"
        .setConnectTimeout(30000)
        .setReconnectInterval(5000)
        .setContainerId("my-container");
}

Esta instancia se recupera y se utiliza para configurar el cliente utilizado por el conector. Debe indicar el nombre del cliente utilizando el atributo client-options-name:

mp.messaging.incoming.prices.client-options-name=my-named-options

Si experimenta desconexiones frecuentes del broker, también puede utilizar AmqpClientOptions para establecer un latido si necesita mantener la conexión AMQP de forma permanente. Algunos brokers pueden finalizar la conexión AMQP tras un determinado tiempo de espera inactivo. Puedes proporcionar un valor de latido que será utilizado por el cliente Proton de Vert.x para anunciar el tiempo de espera inactivo al abrir el transporte con un par remoto.

@Produces
@Identifier("my-named-options")
public AmqpClientOptions getNamedOptions() {
  // set a heartbeat of 30s (in milliseconds)
  return new AmqpClientOptions()
        .setHeartbeat(30000);
}

Configuración TLS

La extensión de mensajería AMQP 1.0 se integra con el registro TLS de Quarkus para configurar el cliente AMQP Vert.x.

Para configurar el TLS para un canal AMQP 1.0, debe proporcionar una configuración TLS con nombre en application.properties:

quarkus.tls.your-tls-config.trust-store.pem.certs=ca.crt,ca2.pem
# ...
mp.messaging.incoming.prices.tls-configuration-name=your-tls-config

Informes de salud

Si utiliza el conector AMQP con la extensión quarkus-smallrye-health, contribuye a las sondas de disponibilidad y actividad. El conector AMQP informa de la disponibilidad y actividad de cada canal gestionado por el conector. Por el momento, el conector AMQP utiliza la misma lógica para las comprobaciones de disponibilidad y actividad.

Para desactivar los informes de salud, establezca el atributo health-enabled para el canal en false. 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.

Tenga en cuenta que un fallo en el procesamiento de un mensaje lo anula y pasa a ser gestionado por failure-strategy. Es responsabilidad de failure-strategy informar del fallo e influir en el resultado de las comprobaciones. La estrategia de fallo de fail informa del fallo, por lo que la comprobación informará del fallo.

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, habilite y configure el plugin AMQP 1.0.

A pesar de la existencia del plugin, algunas características de AMQP 1.0 no funcionarán con RabbitMQ. Así, 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 admite eventos de la nube. Cuando el conector detecta un evento de la nube estructurado o binario , añade un IncomingCloudEventMetadata<T> en los metadatos del Message. IncomingCloudEventMetadata contiene accesores a los atributos obligatorios y opcionales del evento de la nube.

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 y cloud-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

Propiedad de configuración fijada en tiempo de compilación - Todas las demás propiedades de configuración son anulables en tiempo de ejecución

Configuration property

Tipo

Por defecto

Dev Services

Tipo

Por defecto

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 amqp-host or amqp-port are set or if all the Reactive Messaging AMQP channel are configured with host or port.

Environment variable: QUARKUS_AMQP_DEVSERVICES_ENABLED

Show more

boolean

Optional fixed port the dev service will listen to.

If not defined, the port will be chosen randomly.

Environment variable: QUARKUS_AMQP_DEVSERVICES_PORT

Show more

int

The image to use. Note that only ActiveMQ Artemis images are supported. Specifically, the image repository must end with artemiscloud/activemq-artemis-broker.

Check the activemq-artemis-broker on Quay page to find the available versions.

Environment variable: QUARKUS_AMQP_DEVSERVICES_IMAGE_NAME

Show more

string

quay.io/artemiscloud/activemq-artemis-broker:1.0.25

The value of the AMQ_EXTRA_ARGS environment variable to pass to the container. For ActiveMQ Artemis Broker ⇐ 1.0.21, set this property to --no-autotune --mapped --no-fsync --relax-jolokia --http-host 0.0.0.0

Environment variable: QUARKUS_AMQP_DEVSERVICES_EXTRA_ARGS

Show more

string

--no-autotune --mapped --no-fsync --relax-jolokia

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 quarkus-dev-service-amqp label. The value is configured using the service-name property.

Container sharing is only used in dev mode.

Environment variable: QUARKUS_AMQP_DEVSERVICES_SHARED

Show more

boolean

true

The value of the quarkus-dev-service-aqmp label attached to the started container. This property is used when shared is set to true. In this case, before starting a container, Dev Services for AMQP looks for a container with the quarkus-dev-service-amqp label set to the configured value. If found, it will use this container instead of starting a new one. Otherwise, it starts a new container with the quarkus-dev-service-amqp label set to the specified value.

This property is used when you need multiple shared AMQP brokers.

Environment variable: QUARKUS_AMQP_DEVSERVICES_SERVICE_NAME

Show more

string

amqp

Environment variables that are passed to the container.

Environment variable: QUARKUS_AMQP_DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

Show more

Map<String,String>

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

false

broadcast

Si los mensajes AMQP recibidos deben ser enviados a múltiples suscriptores

Type: boolean

falso

false

capabilities

Una lista separada por comas de las capacidades propuestas por el cliente emisor o receptor.

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

true

connect-timeout

(amqp-connect-timeout)

El tiempo de espera de la conexión en milisegundos

Type: int

falso

1000

container-id

El id del contenedor AMQP

Type: string

falso

durable

Si la suscripción AMQP es duradera

Type: boolean

falso

false

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 fail (por defecto), accept, release, reject, modified-failed, modified-failed-undeliverable-here

Type: string

falso

fail

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

3

host

(amqp-host)

El nombre de host del broker

Type: string

falso

localhost

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

5672

reconnect-attempts

(amqp-reconnect-attempts)

El número de intentos de reconexión

Type: int

falso

100

reconnect-interval

(amqp-reconnect-interval)

El intervalo en segundos entre dos intentos de reconexión

Type: int

falso

10

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

Establece un selector de mensajes. Este atributo se utiliza para definir un filtro apache.org:selector-filter:string en la terminal de origen, utilizando sintaxis basada en SQL para solicitar al servidor que filtre qué mensajes se entregan al receptor (si el servidor en cuestión lo admite). La funcionalidad precisa soportada y la sintaxis necesaria pueden variar dependiendo del servidor.

falso

tracing-enabled

Si el rastreo está activado (por defecto) o desactivado

Type: boolean

falso

true

use-ssl

(amqp-use-ssl)

Si la conexión AMQP utiliza SSL/TLS

Type: boolean

falso

false

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

Una lista separada por comas de las capacidades propuestas por el cliente emisor o receptor.

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

true

cloud-events-data-content-type

(cloud-events-default-data-content-type)

Configura el atributo datacontenttype por defecto del Evento de Nube saliente. Requiere que cloud-events esté configurado como true. Este valor se utiliza si el mensaje no configura el atributo datacontenttype por sí mismo

Type: string

falso

cloud-events-data-schema

(cloud-events-default-data-schema)

Configura el atributo dataschema por defecto del Evento de Nube saliente. Requiere que cloud-events esté configurado como true. Este valor se utiliza si el mensaje no configura el atributo dataschema por sí mismo

Type: string

falso

cloud-events-insert-timestamp

(cloud-events-default-timestamp)

Si el conector debe o no insertar automáticamente el atributo time en el evento de nube saliente. Requiere que cloud-events se establezca en true. Este valor se utiliza si el mensaje no configura el atributo time por sí mismo

Type: boolean

falso

true

cloud-events-mode

El modo de eventos en la nube ( structured o binary (por defecto)). Indica cómo se escriben los eventos de la nube en el registro de salida

Type: string

falso

binary

cloud-events-source

(cloud-events-default-source)

Configura el atributo source por defecto del Evento de Nube saliente. Requiere que cloud-events esté configurado como true. Este valor se utiliza si el mensaje no configura el atributo source por sí mismo

Type: string

falso

cloud-events-subject

(cloud-events-default-subject)

Configura el atributo subject por defecto del Evento de Nube saliente. Requiere que cloud-events esté configurado como true. Este valor se utiliza si el mensaje no configura el atributo subject por sí mismo

Type: string

falso

cloud-events-type

(cloud-events-default-type)

Configura el atributo type por defecto del Evento de Nube saliente. Requiere que cloud-events esté configurado como true. Este valor se utiliza si el mensaje no configura el atributo type por sí mismo

Type: string

falso

connect-timeout

(amqp-connect-timeout)

El tiempo de espera de la conexión en milisegundos

Type: int

falso

1000

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

2000

durable

Si los mensajes AMQP enviados se marcan como duraderos

Type: boolean

falso

false

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

3

host

(amqp-host)

El nombre de host del broker

Type: string

falso

localhost

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

false

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

5672

reconnect-attempts

(amqp-reconnect-attempts)

El número de intentos de reconexión

Type: int

falso

100

reconnect-interval

(amqp-reconnect-interval)

El intervalo en segundos entre dos intentos de reconexión

Type: int

falso

10

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

true

ttl

El tiempo de vida de los mensajes AMQP enviados. 0 para desactivar el TTL

Type: long

falso

0

use-anonymous-sender

Si el conector debe utilizar o no un remitente anónimo. El valor por defecto es true si el broker lo soporta, false en caso contrario. Si no se admite, no es posible cambiar dinámicamente la dirección de destino.

Type: boolean

falso

use-ssl

(amqp-use-ssl)

Si la conexión AMQP utiliza SSL/TLS

Type: boolean

falso

false

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

Configurar canales condicionalmente

Puede configurar los canales utilizando un perfil específico. Así, los canales sólo se configuran (y se añaden a la aplicación) cuando el perfil especificado está activado.

Para conseguirlo, necesitas:

  1. Prefijo para las entradas mp.messaging.[incoming|outgoing].$channel con %my-profile, de modo que queden como %my-profile.mp.messaging.[incoming|outgoing].$channel.key=value

  2. Utilice el @IfBuildProfile("my-profile") en los beans CDI que contienen anotaciones @Incoming(channel) y @Outgoing(channel) que sólo necesitan ser habilitadas cuando el perfil está habilitado.

Tenga en cuenta que la mensajería reactiva verifica que el grafo esté completo. Por lo tanto, cuando utilice una configuración condicional de este tipo, asegúrese de que la aplicación funciona con y sin el perfil activado.

Tenga en cuenta que este enfoque también se puede utilizar para cambiar la configuración del canal en función de un perfil.

Related content