Recuento de Tweets
Tweets por Ubicación
Últimos 10 Tweets
Información
Un usuario o API envía palabras de filtro mediante una conexión WebSocket; en el servidor se crea una conexión con el cliente (API o usuario) obtenida a través del componente "Stream Holder", cuya función es gestionar la conexiones solicitadas.
El "Stream Holder" solicita una credencial al "Credentials Pool", con la cual se se abre una conexión con el API público de Twitter y envía una consulta especificando los filtros, el resultado son tweets en tiempo real recibidos a través del "Message Receiver".
El "Message Receiver" es un sujeto dentro del patrón observer: cuando la conexión a Twitter recibe un tweet, lo notifica al "Message Receiver" y este, para no bloquear el hilo que lo invoca, usa una Cola de Mensajes para comunicarse con el "Server Socket", es decir, pone los mensajes en la cola y el "Server Socket" los recoge de allí.
Este proceso optimiza el tiempo de bloqueo en O(1), que es la Complejidad Computacional de insertar en una cola.
Esta solución es extensible a un número mucho mayor de nodos, en complemento con un cluster kafka como se muestra en nuestra demo con kafka.
Para más información, se puede consultar la entrada en el blog de TodoBI.