Breaking

Post Top Ad

Your Ad Spot

viernes, 22 de noviembre de 2019

Tutorial de NSQ: cree una cola de mensajes simple con NSQ

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!
Foto de Anastasia Dulgier en Unsplash

¿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.
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
/ 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
{"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

Post Top Ad

Your Ad Spot

PƔginas