Hola, querido programador, bienvenido a mi serie de artĆculos de tecnologĆa dedicada a NSQ . No hay tantos tutoriales sobre esta tecnologĆa, asĆ que decidĆ hacer uno. ¡Espero que lo disfrutes!
¿Por quĆ© NSQ?
NSQ es una plataforma de mensajerĆa distribuida en tiempo real escrita en Go y creada por el conocido servicio bit.ly.
Es simple y simple en comparación con sistemas similares (como RabbitMQ), fÔcil de usar y tiene una buena interfaz de usuario de administración intuitiva. Si nunca antes ha utilizado un sistema de Message Queue, NSQ es la mejor opción para comprender sus principios.
Concepto de cola de mensajes:
Message Queue es una implementación del patrón arquitectónico de editor / suscriptor que se utiliza para la comunicación entre diferentes partes (aplicaciones, servicios, etc.) de su sistema.

En palabras bƔsicas, cuando ocurre un evento (por ejemplo, se crea un nuevo usuario), se publica un mensaje en una cola de mensajes. Cualquier servicio que estƩ interesado en ese evento estƔ suscrito a ese mensaje.
Tan pronto como se publica el mensaje, el servicio interesado (consumidor) recibe un mensaje y realiza algunas acciones. (por ejemplo, enviar un correo electrónico a un nuevo usuario).
1. Descargar NSQ
Vaya a https://nsq.io/deployment/installing.html y descargue nsq binary para su sistema operativo.
Abra la carpeta extraĆda y allĆ puede ver diferentes ejecutables:
- nsqlookupd.exe
- nsqd.exe
- nsqadmin.exe
- .. y muchos otros pero no son tan importantes para nosotros
2. Ejecute nsqlookupd
Abra el directorio extraĆdo en el terminal de shell / comando que prefiera y ejecute:
DeberĆa ver el siguiente resultado:
$ ./nsqlookupd
[nsqlookupd] 2019/10/21 13: 21: 18.830625 INFORMACIĆN: nsqlookupd v1.2.0 (construido con go1.12.9)
[nsqlookupd] 2019/10/21 13: 21: 18.832649 INFORMACIĆN: TCP: escuchando en [::]: 4160
[nsqlookupd] 2019/10/21 13: 21: 18.832649 INFO: HTTP: escuchando en [::]: 4161
Lo que dice que nsqlookupd se estĆ” ejecutando y tiene dos interfaces:
una estĆ” usando TCP con el puerto 4160 y otra estĆ” usando HTTP con el puerto 4161.
una estĆ” usando TCP con el puerto 4160 y otra estĆ” usando HTTP con el puerto 4161.
Para comprobar que funciona, podemos abrir el navegador y acceder a http: // localhost: 4161 / topics
Esta es la respuesta que debe obtener y estĆ” bien. En este momento todavĆa no tenemos ningĆŗn tema registrado.
TambiĆ©n puede obtener todos los canales, productores para un tema especĆfico, nodos de nsqd, crear temas, canales, etc. Encuentre mĆ”s en la documentación aquĆ.
BĆ”sicamente, nsqlookupd es un servicio de descubrimiento que ayuda a los consumidores a encontrar productores de nsqd para un tema especĆfico.
nsqlookupd es el demonio que gestiona la información de topologĆa. Los clientes consultan nsqlookupd para descubrir productores nsqd para un tema especĆfico y los nodos nsqd difunden información sobre temas y canales.
3. Ejecute nsqd
Ahora ejecuta en shell nsqd:
DeberĆa ver el siguiente resultado:
[nsqd] 2019/10/21 13: 39: 56.997863 INFORMACIĆN: nsqd v1.2.0 (construido con go1.12.9)
[nsqd] 2019/10/21 13: 39: 56.998861 INFORMACIĆN: ID: 791
[nsqd] 2019 / 21/10 13: 39: 57.000861 INFORMACIĆN: NSQ: tema persistente / metadatos de canal a nsqd.dat
[nsqd] 2019/10/21 13: 39: 57.011825 INFORMACIĆN: HTTP: escuchando en [::]: 4151 [nsqd] 2019 / 10/21 13: 39: 57.011825 INFO: TCP: escuchando en [::]: 4150
4. Publica un mensaje
Ahora es el momento de publicar nuestro primer mensaje para hacer cola. Abra el cartero o cualquier otra herramienta para hacer llamadas HTTP y hacer una solicitud para PUBLICAR: http: // localhost: 4151 / pub? Topic = test
con un cuerpo JSON
con un cuerpo JSON
/ pub es un punto final de NSQ para crear mensajes. Requiere un parĆ”metro de consulta llamado "tema" . El tema representa un nombre del mensaje, cualquier mensaje publicado con el mismo tema serĆ” consumido por cada oyente de este tema. šØ
Si la solicitud es 200 OK, nuestro nuevo tema se crearÔ automÔticamente. RecibirÔ una notificación al respecto en la consola de nsqd:
[nsqd] 2019/10/21 13: 49: 04.740353 INFORMACIĆN: TEMA (prueba): creado
[nsqd] 2019/10/21 13: 49: 04.740353 INFORMACIĆN: NSQ: metadatos persistentes de tema / canal a nsqd.dat
Otra lĆnea dice que la información sobre el tema creado se mantuvo en un archivo de metadatos nsqd.dat.
Abra el archivo nsqd.dat en el directorio bin con cualquier editor de texto y verĆ” sus temas allĆ. Pero tenemos una opción mucho mejor para ver los temas y mantenerlos. Hora de usar NSQ Admin .
5. Inicie NSQ Admin
Ahora ejecuta en shell nsqadmin:
VerĆ”s un error en la consola ❌
[nsqadmin] 2019/10/21 14: 18: 04.255018 FATAL: no se pudo crear una instancia de nsqadmin - --nsqd-http-address o --lookupd-http-address requerido
El error dice que debe proporcionar una dirección a nsqd o nsqdlookup. ¡Vamos a hacerlo!
./nsqadmin --nsqd-http-address localhost: 4151
Ahora verĆ” un mensaje de que nsqadmin se estĆ” ejecutando:
[nsqadmin] 2019/10/21 14: 21: 41.223806 INFORMACIĆN: nsqadmin v1.2.0 (construido con go1.12.9)
[nsqadmin] 2019/10/21 14: 21: 41.224804 INFORMACIĆN: HTTP: escuchando en [::] : 4171
Abra en el navegador esta dirección http: // localhost: 4171
DeberĆa poder ver un tema "prueba" allĆ. AdemĆ”s, si va a la pestaƱa Nodos , puede ver que nuestra instancia nsqd se estĆ” ejecutando y estĆ” conectada. š
Si presiona la pestaƱa Buscar , verƔ una advertencia. Esto se debe a que ahora estamos conectados directamente a nsqd evitando el uso de nsqdlookup, que no es recomendado por los creadores de NSQ.
Ahora ejecute este comando con una dirección de bĆŗsqueda especĆfica:
$ ./nsqadmin --lookupd-http-address localhost: 4161
Abra la interfaz de usuario de administración de NSQ y haga clic en la pestaƱa Buscar ... parece estar bien. Pero revise la pestaƱa Nodos nuevamente. Espera ... ¿cero nodos? ¿Por quĆ©?
En este momento conectamos nsqadmin a nsqlookupd pero la instancia nsqd no estĆ” conectada a nada. Entonces nuestra cadena estĆ” rota š„!
Las dependencias correctas deben ser nsqadmin -> nsqlookupd <- nsqd . Vamos a arreglarlo
Simplemente cierre la instancia nsqd y ejecútelo nuevamente especificando la dirección nsqlookupd:
./nsqd -lookupd-tcp-address localhost: 4160
Esta vez deberĆamos usar la dirección TCP de lookupd, cuyo puerto es 4160.
Actualice Admin UI y todo deberĆa funcionar nuevamente. ¡Ambas pestaƱas funcionan a la perfección! ✨
6. Crear una aplicación para el consumidor
Necesitamos tener una aplicación bÔsica para consumir nuestros mensajes. Creemos una aplicación Node.js simple para ese objetivo.
Cree una nueva carpeta con cualquier nombre y ejecute los siguientes comandos:
npm init -y npm expreso nsqjs
Se necesita la biblioteca Express para crear un servidor http y nsqjs es una biblioteca cliente oficial proporcionada por el equipo de NSQ. enlace aquĆ
Crear archivo server.js
En nuestro directorio de proyectos ejecute:
RecibirĆ” todos los mensajes en cola ahora. La consola de la aplicación del consumidor deberĆa mostrar esto:
¡NSQ Consumer estĆ” escuchando en el puerto 3000! Mensaje recibido [0c6020dfa34cf000]: {"texto": "algĆŗn mensaje"}
Eso sucedió porque nuestro mensaje esperó en la cola hasta que se consumió.
En el administrador de NSQ, si selecciona Nodos, verĆ” que el nuevo ClientHost estĆ” conectado ahora hace unos segundos.
7. Prueba de recepción de mensajes
Mantenga server.js en ejecución y ahora solicite a POSTMAN que publique un nuevo mensaje en el tema "prueba"
POST http: // localhost: 4151 / pub? Topic = prueba
con un cuerpo
con un cuerpo
{"texto": "CONECTADO !!! ¡SĆ!" }
DeberĆas verlo en una consola de inmediato. Felicidades! š Tiene un sistema de cola de mensajes en funcionamiento. š
š
š
⚠️ NOTA: Si presiona Counter en NSQ Admin, verĆ” que ahora ya no es cero.
Si envĆa mensajes a otros temas, no los verĆ” porque suscribimos nuestra aplicación para el consumidor a un solo tema que es "prueba".
š Si lees algo interesante de ese artĆculo, dale me gusta y sĆgueme para mĆ”s publicaciones. Gracias querido codificador! š
No hay comentarios.:
Publicar un comentario