Dalam dunia pemrograman, terdapat jenis perangkat lunak bernama message broker. Fungsinya, untuk mengatur pesan yang dikirimkan oleh pengirim agar dapat sampai ke penerima. Seperti dilansir 3pillarglobal.com, message broker biasanya digunakan pada layanan telekomunikasi, perbankan, e-commerce, serta pesan singkat. Ada banyak contoh perangkat lunak jenis ini, antara lain ActiveMQ, Kafka, dan RabbitMQ. Namun, dalam artikel ini, kami akan menggunakan RabbitMQ sebagai contoh.
Seperti kantor pos
Agar lebih mudah, Anda dapat menganalogikan RabbitMQ sebagai kantor pos. Ketika Anda mengirim surat, Anda harus memasukkan surat tersebut ke kotak pos untuk diproses di kantor pos, disortir, dan diantarkan oleh tukang pos.
Dalam analogi tersebut, RabbitMQ bertindak sebagai kotak pos, kantor pos, dan tukang pos sekaligus. Misalnya, RabbitMQ menyimpan antrean pesan yang berisi alamat surel dan isi surel. Ketika RabbitMQ mengirim pesan tersebut ke receiver, maka receiver akan mengirim surel dengan tujuan dan isi surel sesuai pesan yang diterima RabbitMQ.
Proses penggunaan
Untuk mengetahui proses penggunaan RabbitMQ, mari ikuti langkah-langkah berikut.
Instalasi
Untuk instalasi RabbitMQ, Anda bisa mengecek https://www.rabbitmq.com/download.html. Lalu pilih instruksi sesuai dengan platform yang Anda gunakan.
Kenali berbagai istilahnya
Sebelum memulai, ada beberapa istilah yang harus kita ketahui pada RabbitMQ.
Producing
Producing tidak beda dari mengirim. Program yang mengirimkan pesan disebut dengan producer.
Queue
Queue bisa disebut dengan antrean yaitu nama untuk kotak pos yang ada didalam RabbitMQ. Banyak producer bisa mengirim banyak pesan ke satu antrean dan banyak consumer dapat menerima data dari satu antrean.
Consuming
Consuming sama saja dengan menerima. Consumer adalah program penunggu penerimaan pesan.
Sebagai catatan producer, consumer, dan broker tidak harus berada pada satu host yang sama.
Permulaan
Sebagai permulaan, Anda bisa membuat program sederhana yang akan mengirimkan pesan kepada penerima. Sebelum memulai, pastikan RabbitMQ sudah terpasang dan berjalan. Lalu buat direktori baru dan npm init di dalamnya.
Kode
Install amqp.node dengan npm install amqplib lalu buat file baru producer.js yang nantinya akan berperan sebagai producer.
Import package amqp.node tadi
const amqp = require('amqplib')
Hubungkan ke RabbitMQ server dan buat channel baru
...
amqp.connect('amqp://localhost').then(conn => conn.createChannel())
Kemudian declare queue, agar Anda bisa mengirimkan pesan.
...
conn.createChannel().then(ch => {
const q = 'hello'
const msg = 'Hello world!'
const ok = ch.assertQueue(q, { durable: false })
ok.then(() => {
ch.sendToQueue(q, Buffer.from(msg))
console.log('- Sent', msg)
return ch.close()
})
})
...
Kode lengkap producer.js
const amqp = require('amqplib') // Import library amqp
amqp.connect('amqp://localhost')
.then(conn => {
return conn.createChannel().then(ch => {
const q = 'hello' // Nama antrian adalah 'hello'
const msg = 'Hello world!' // Isi pesan yang dikirim ke RabbitMQ
const ok = ch.assertQueue(q, { durable: false }) // Membuat antrian 'hello'
return ok.then(() => {
ch.sendToQueue(q, Buffer.from(msg)) // Mengirim pesan ke RabbitMQ
console.log('- Sent', msg)
return ch.close()
})
}).finally(() => conn.close())
}).catch(console.warn)
Selanjutnya, buat file baru consumer.js yang akan berperan sebagai consumer. Import amqp.node lalu hubungkan ke RabbitMQ server dan buat channel baru.
const amqp = require('amqplib')
amqp.connect('amqp://localhost').then(conn=> {
return conn.createChannel().then(ch => {})
})
Declare nama queue dan buat callback yang akan dieksekusi ketika RabbitMQ mengirim pesan ke consumer. Sebagai catatan, jika nama queue yang dideklarasikan sudah ada, maka broker tidak akan membuat queue baru, melainkan menggunakan queue yang sudah ada.
conn.createChannel().then(ch => {
const ok = ch.assertQueue('hello', { durable: false })
ok.then(() => {
return ch.consume('hello', msg => console.log('- Received', msg.content.toString()), { noAck: true })
})
Kode lengkap consumer.js
const amqp = require('amqplib') // Import library amqp
amqp.connect('amqp://localhost')
.then(conn=> {
return conn.createChannel().then(ch => {
const ok = ch.assertQueue('hello', { durable: false }) // Deklarasi antrian
ok.then(() => {
/* Menangkap pesan yang dikirimkan oleh RabbitMQ */
return ch.consume('hello', msg => console.log('- Received', msg.content.toString()), { noAck: true })
})
.then(() => {
console.log('* Waiting for messages. Ctrl+C to exit')
})
})
}).catch(console.warn)
Uji coba
Untuk uji coba dari kode yang Anda buat di atas menggunakan terminal, jalankan node producer.js terlebih dahulu. Lalu jalankan consumer untuk menerima pesan Hello world! yang dikirimkan oleh producer node consumer.js
Dapat dilihat, sesaat setelah Anda menjalankan consumer, akan tercetak tulisan, “Received Hello World!” Artinya,
Dapat kita lihat sesaat setelah kita menjalankan consumer akan tercetak tulisan — Received Hello world! Itu artinya, percobaan Anda menggunakan RabbitMQ pertama kali telah berhasil!
Sumber:
medium.com
medium.com
3pillarglobal.com