Zanim zaczniemy pracę z systemem RabbitMQ, warto zrozumieć, jak działa wykonywanie skryptów dla tego środowiska, napisanych w języku JavaScript.
Otóż node.js oprócz tego, że pełni rolę serwera WWW, jest również interpreterem plików .js, podobnie jak np. Bash jest interpreterem skryptów o rozszerzeniu .sh.
Najprostszy program napisany w JavaScript, który możemy uruchomić z pomocą node.js, wygląda następująco:
#!/usr/bin/env node
console.log("Witamy w Świecie Node.js");
Pliki takie mogą być uruchamiane z linii poleceń, co oznacza, że aby uruchomić taki kod JavaScript, wystarczy wpisać:
$ ./witamy.js
Witamy w Świecie Node.js
Oczywiście taki plik musi być wykonywalny, czyli oznaczony literą x przy wyświetlaniu zawartości katalogu za pomocą:
$ ls -al
-rwxr-xr-x 1 tomasz tomasz
396 wrz 21 19:43 witamy.js
Zanim zaczniemy pisać kod programów w języku JavaScript, potrzebujemy zainstalować w katalogu projektu bibliotekę amqplib, udostępniającą interfejs łączący się z serwerem RabbitMQ. Biblioteka ta nie jest dostarczana wraz z kurierem wiadomości, jednak jest polecana przez jego twórców.
Aby ją zainstalować, potrzebujemy stworzyć plik opisujący zależności naszego projektu (package.json) zarządzany przez menadżera pakietów node.js, czyli npm:
{
"name": "rattique-tutorials-pl-node-js",
"version": "0.7.0",
"description": "Tutorial RabbitMQ dla środowiska node.js",
"email": "tkuter@loculus.pl",
"dependencies": {
"amqplib": "^0.4"
},
"keywords": [
"AMQP",
"AMQP 0-9-1",
"RabbitMQ",
"RattiQue",
"node.js",
"amqplib"
],
"author": "Tomasz Kuter <tkuter@loculus.pl>",
"license": "MIT"
}
Posiadając taki plik, wystarczy, że wykonamy polecenie:
$ npm install
a wszelkie zależności zostaną pobrane i zainstalowane w podkatalogu naszego projektu: node_modules.
Kolejnym krokiem będzie już tworzenie pierwszych dwóch programów, nadawcy komunikatów oraz odbiorcy komunikatów, który pobiera dane z kolejki.
Kod programów omawianych w tym tutorialu znajduje się pod adresem:
https://github.com/RattiQue/tutorials-pl-node.js
Web Developer z ponad 8-letnim, komercyjnym doświadczeniem w tworzeniu stron i aplikacji internetowych oraz paneli administracyjnych w PHP, JavaScript, HTML i CSS.
Aktualnie zainteresowany architekturą mikroserwisów, które umożliwiają budowanie skalowalnych aplikacji internetowych.