Cómo evitar las activaciones duplicadas del servicio Spring Integration al sondear el directorio

Tengo un sondeo de directorio Spring Integration:

<task:executor id="filePollingExecutor" pool-size="1" />
<int:channel id="inboundFilesChannel" datatype="java.io.File" />
<int-file:inbound-channel-adapter id="inboundFilesAdapter" 
      channel="inboundFilesChannel"
      directory="/my/files/queue"
      prevent-duplicates="true">
  <int:poller id="poller" fixed-delay="1000" 
              max-messages-per-poll="1" 
              task-executor="filePollingExecutor" />
</int-file:inbound-channel-adapter>

En respuesta a los archivos que aparecen en el directorio, tengo un activador de servicio que invoca un método en un servicio:

Desafortunadamente, descubro que el servicio se llama constantemente dos veces cuando llega un archivo. Originalmente, pensé que esto se debía a que tenía múltiples subprocesos de ejecutor, pero puede notar que anteriormente intenté resolver eso atando el sondeo a un TaskExecutor con un tamaño de grupo de 1.

Lo que he encontrado es que puedo solucionar el problema aumentando el retraso entre las encuestas. Creo que la clave es que es más largo que el tiempo que lleva procesar un archivo.

<int:poller id="poller" fixed-delay="10000" 
            max-messages-per-poll="100" 
            task-executor="filePollingExecutor" />

Sin embargo, eso se siente como un error más que una solución.

¿Me falta alguna configuración que debería usar para evitar duplicados?

Posiblemente valga la pena señalar que intenté usar unnio-locker, pero el problema es que parte del procesamiento implica enviar un correo electrónico con el archivo adjunto. Los bloqueos de archivos impidieron que se realizara, ya que el archivo dejó de ser legible durante la duración del bloqueo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta