Establecer un valor dinámico para el tiempo de vida en la integración de Spring

Tenemos mensajes provenientes de la parte superior con una marca de tiempo de vencimiento. Estos mensajes deben procesarse y enviarse a la cadena posterior con un tiempo de vida

Para varios tipos de mensajes, recibimos una marca de tiempo de vencimiento diferente y, por lo tanto, el tiempo de vida se calcula por separado para cada tipo de mensaje en un activador de servicio y se establece en la carga útil del encabezado del mensaje saliente de la siguiente manera:

MessageBuilder.fromMessage(requestMessage).
setHeader("header1",header1).
setHeader("header2",header2).
setHeader("timeToLive",timeToLive).
setHeader("header3",header3).build();

Ahora, estamos utilizando para publicar este mensaje de la siguiente manera:

<int-jms:outbound-channel-adapter id="publishMessage" channel="publishMessageChannel" header-mapper="headerMapper"
                                     pub-sub-domain="${is.topic}"
                                     destination-name="${outbound.queue}" connection-factory="outputConnectionFactory" order="1" explicit-qos-enabled="true" time-to-live="headers['timeToLive']">
    <int-jms:request-handler-advice-chain>
        <ref bean="retryAdvice" />
    </int-jms:request-handler-advice-chain>    

Arriba está lanzando la siguiente excepción, ya que el tiempo de vida está configurado para aceptar solo números

Causado por: org.springframework.beans.TypeMismatchException: Error al convertir el valor de propiedad del tipo 'java.lang.String' al tipo requerido 'largo' para la propiedad 'timeToLive'; la excepción anidada es java.lang.NumberFormatException: para la cadena de entrada: "'headers [' timeToLive ']'

Estamos en la versión 4.3 de SI, así que no podemos usar la expresión de tiempo de vida disponible en versiones posteriores

Necesita encontrar una manera de obtener el valor de timeToLive del conjunto de encabezados enriquecidos a time-to-live en int-jms: adaptador de canal saliente

Respuesta 1

Tengo un programa escrito en Java que lee un archivo de Excel y genera el contenido de la celda en la consola de salida de Java, este archivo de Excel contiene datos árabes. El programa funciona bien pero algunas letras árabes ...

Quiero obtener una vista de mi código una vez que se convierte en binario después de presionar Ejecutar clase pública HelloWorld {public static void main (String [] args) {System.out.println ("Hello World"); } } Es ...

Mi aplicación necesita descargar una base de datos desde un enlace, aquí está el código que uso para descargar la base de datos y guardarla en la tarjeta SD: public void DownloadBD () {try {URL url = new URL (...

Código fuente de sdk que dice que com.amazonaws.services.cloudfront.CloudFrontUrlSigner es un tipo de enumeración. Por qué no implementaron esto como una clase de utilidad Java normal; por ejemplo, clase CloudFrontUrlSigner ...