Published on

Technology

RabbitMQ, si message broker alias kantor pos

Widyanto Gunadi

message_broker.jpg

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
 

Tags

Share

Artikel Terkait

pexels-antoni-shkraba-5588311.jpg

Technology

3 Cara Daftar Paket Nelpon Telkomsel Paling Mudah 2022

Chrissila Jessica

25 May 2022
4 min read
H1_1._Apa_Itu_Koin_Metaverse__Berikut_Penjelasannya_dan_Rekomendasi_Koin_untuk_Dibeli_2022.jpg

Technology

Apa Itu Koin Metaverse? Berikut Penjelasannya dan Rekomendasi Koin untuk Dibeli 2022

Anisa Sekarningrum

25 May 2022
5 min read
H1.jpg

Technology

Kenali Apa Itu NFT, Aset Digital yang Sedang Booming di Tahun 2021

Anissa Trisdianty

25 May 2022
5 min read

Terpopuler Bulan Ini

01

10 Contoh Deskripsi Diri Sendiri yang Profesional dan Menarik HRD

Maria Tri Handayani

07 April 2022
6 min read
02

Jadwal FYP TikTok 2022: Pelajari dan Terapkan Tren Terbaru Agar Kontenmu Ramai!

Nurina Ulfah

04 April 2022
5 min read
03

5 Cara Cek Nomor Smartfren Sendiri dengan Cepat dan Mudah 2022

Algonz D.B. Raharja

27 April 2022
5 min read
04

Tips Menyampaikan Kata-Kata Perpisahan Kerja yang Berkesan

Maria Tri Handayani

07 April 2022
5 min read
05

12 Jenis Strategi Pemasaran yang Paling Efektif Beserta Contohnya

Tsalis Annisa

07 April 2022
5 min read