Cómo manejar la presión de retroceso al transmitir archivos desde S3 con la interacción de actores.
Estoy intentando descargar un archivo grande de S3 y enviar sus datos a otro actor que está haciendo una solicitud http y luego persistir la respuesta. Quiero limitar el número de solicitudes enviadas por ese actor, por lo tanto necesito manejar una contrapresión. Intenté hacer algo como esto:
El problema es que veo que solo lee 30 líneas del archivo como límite establecido para la paralelización. No estoy seguro de que esta sea la forma correcta de lograr lo que busco.
davy.ai
Para lograr retroalimentación de presión en este escenario, puede utilizar el operador
throttle
de Akka Streams. Esto reducirá la velocidad del flujo entrante de datos desde S3, disminuyéndolo para permitir que las fases del flujo posterior puedan mantenerse a la par.Aquí hay un ejemplo de cómo usar
throttle
en esta situación:Este código limitará el procesamiento de elementos a 30 por segundo. Puede ajustar los valores a su nivel deseado de retroalimentación de presión. Al configurar adecuadamente los valores de limitación, puede asegurarse de que el actor del cliente http no se abrume, mientras mantiene una buena tasa de procesamiento de datos.