Documentation for a newer release is available.
View Latest
Agregar cabeceras a TransportMessages
¿Cómo agrego cabeceras a un mensaje saliente?
Este ejemplo de Connector muestra cómo puede agregar cualquier número de cabeceras a los mensajes enviados por un SendingConnector.
Las cabeceras se crean durante la conversión de un tipo de destino a la etapa TransportMessage, como se describe en Stages.
Implementación de un SendTransportMessageConverter
El componente que realiza la transformación a TransportMessage se llama SendTransportMessageConverter.
Para ver cómo registrar su convertidor con un connector, consulte esta página de primeros pasos.
A continuación se muestra un convertidor de ejemplo que, condicionalmente, crea algunas cabeceras y las agrega al mensaje de transporte:
SendTransportMessageConverter<YourTargetType> converter() {
return toSend -> {
MessageHeaders headers = /*condition*/
? new MessageHeaders("foo", "bar") (1)
: new MessageHeaders(Map.of("foo", "bar", "baz", "qux")); (2)
if (/*another condition*/) {
headers = headers.putHeader("a", "b") (3)
} else {
headers = headers.putHeaders(Map.of("c", MultiValueHeader.of("d", "e"))) (4)
}
return new TransportMessage(headers, SerializationHelper.objectToString(toSend)); (5)
}
}
| 1 | Creación de una instancia de MessageHeaders con una sola cabecera (foo) que contiene un único valor (bar) |
| 2 | Creación de una instancia de MessageHeaders a partir de un Map, donde cada par clave-valor corresponde a un nombre de cabecera y su valor |
| 3 | Observe la asignación a headers: MessageHeaders es un tipo inmutable, por lo que putHeader crea una nueva instancia que contiene la cabecera adicional a |
| 4 | También es posible crear una cabecera multi-valor: simplemente use una instancia del tipo MultiValueHeader como contenedor para sus valores |
| 5 | Finalmente, no olvide crear el TransportMessage resultante con la instancia correcta de MessageHeaders |