Uno de nuestros flujos DSL de Spring Integration está destinado a ser un sondeador simple basado en una expresión cron. Normalmente configuraría una implementación de PollableChannel (p. ej., QueueChannel) o utilizando un InboundAdapter (p. ej., FTP, HTTPS, S3, etc.) para procesar los mensajes entrantes que tienen una propiedad de sondeo.
En nuestro caso, no tendremos ningún mensaje entrante para procesar. Simplemente queremos iniciar el IntegrationFlow basado en SI DSL todas las noches, preferiblemente usando una expresión cron. ¿Hay alguna manera de que podamos iniciar un SI Flow con un sondeador o "falsificar" un mensaje basado en un trabajo cron?
IntegrationFlows .from(() -> new GenericMessage<>(""), e -> e.poller(p -> p.cron("0 0 0 * * ?"))) Dado que no hay algo como NullMessage o Message con carga útil null , solo enviamos un mensaje "falso" con una cadena vacía como carga útil. Simplemente puede ignorar ese mensaje aguas abajo.
El primer Lambda es la implementación de MessageSource<T> exactamente lo que mencionó sobre (S)FTP, S3, JDBC, etc.
Seguirá siendo el mismo adaptador de canal de entrada, equivalente a-la para el <int:inbound-channel-adapter ref="">