Crear un cliente para consumir datos de streaming
Diseño del cliente
- Establecer una conexión de streaming HTTPS con el endpoint de flujo filtrado.
- Enviar solicitudes POST de forma asíncrona al endpoint de reglas del flujo filtrado para agregar y eliminar reglas del flujo.
- Gestionar volúmenes bajos de datos: mantener la conexión de streaming, detectando objetos Post y señales de keep-alive.
- Gestionar volúmenes altos de datos: desacoplar la ingestión del flujo del procesamiento adicional mediante procesos asíncronos y asegurarse de vaciar regularmente los búferes del lado del cliente.
- Administrar el seguimiento del consumo de volumen en el lado del cliente.
- Detectar desconexiones del flujo, evaluar y reconectarse al flujo automáticamente.
Conectarse a un endpoint de streaming
Consumo de data
- Campos en cualquier orden
- Campos inesperados o ausentes
- Posts sin orden
- Mensajes duplicados
- Nuevos tipos de mensajes arbitrarios que lleguen por el stream en cualquier momento
Almacenamiento en búfer
Los endpoints de streaming enviarán datos tan pronto como estén disponibles, lo que puede generar volúmenes altos en muchos casos. Si el servidor de X no puede escribir nuevos datos en el stream de inmediato (por ejemplo, si tu cliente no está leyendo lo suficientemente rápido; consulta manejo de desconexiones para más información), almacenará el contenido en un búfer de su lado para permitir que tu cliente se ponga al día. Sin embargo, cuando ese búfer se llena, se inicia una desconexión forzada para cerrar la conexión, y los Posts almacenados en el búfer se descartarán y no se reenviarán. Consulta a continuación para más detalles. Una manera de identificar cuándo tu App se está quedando atrás es comparar la marca de tiempo de los Posts que se reciben con la hora actual y hacer seguimiento de esto a lo largo del tiempo. Aunque los atascos del stream no pueden eliminarse por completo debido a la posible latencia e interrupciones en la internet pública, pueden reducirse en gran medida mediante una configuración adecuada de tu App. Para minimizar su ocurrencia:- Asegúrate de que tu cliente lea el stream lo suficientemente rápido. Por lo general, no deberías realizar procesamiento real mientras lees el stream. Lee el stream y deriva la actividad a otro hilo/proceso/almacén de datos para procesarla de forma asíncrona.
- Asegúrate de que tu centro de datos tenga ancho de banda de entrada suficiente para admitir grandes volúmenes de datos sostenidos, así como picos significativamente mayores (por ejemplo, 5-10x el volumen normal). En el caso del filtered stream, el volumen y el ancho de banda correspondiente requeridos de tu lado dependen por completo de qué Posts estén coincidiendo con tus reglas.