es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

InboundChannelAdapter con problema al tener fixedDelay y maxMessagesPerPoll – fixedDelay ignorado

Estoy utilizando InboundChannelAdapter para obtener datos de una base de datos cada 100000 milisegundos.

@InboundChannelAdapter(value = "inboundChannel", poller = @Poller(fixedDelay="100000", maxMessagesPerPoll = "10000"))

A continuación, hay un transformador donde transformo los datos obtenidos en formato JSON.

@Transformer(inputChannel = "inboundChannel" , outputChannel = "outChannel")
public Message<string> transformer(Message<><myob>> items)

Cuando ejecuto el código, parece que el valor de “fixedDelay” se ignora por completo (no espera 100000 milisegundos) si se define “maxMessagesPerPoll”.

Si elimino “maxMessagesPerPoll”, funciona correctamente.

En la tabla solo tengo 2 filas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en spring-boot y spring-integration, mi análisis del código proporcionado sugiere que cuando se establece maxMessagesPerPoll, se ignora el fixedDelay. Esto se debe a la lógica detrás de la configuración de maxMessagesPerPoll, que limita el número total de mensajes que se pueden extraer en cada ciclo. Si se alcanza el número máximo de mensajes antes del retardo fijo, entonces el extractor se detiene inmediatamente y continúa con el transformador.

    Sin embargo, en el caso del código proporcionado, maxMessagesPerPoll se establece muy alto, ya que solo hay dos filas en la tabla de la base de datos. Como resultado, el extractor se detiene inmediatamente sin esperar el retardo fijo definido de 100000 milisegundos. Para resolver esto, se debe modificar la configuración de maxMessagesPerPoll para reflejar el número real de filas en la tabla de la base de datos.

    Por lo tanto, sugiero modificar la configuración de maxMessagesPerPoll a un valor adecuado basado en el número de filas en la tabla de la base de datos para asegurarse de que no se ignore el retardo fijo.

Comments are closed.