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.
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 elfixedDelay
. Esto se debe a la lógica detrás de la configuración demaxMessagesPerPoll
, 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 demaxMessagesPerPoll
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.