Technology

RabbitMQ, si message broker alias kantor pos

Published on
Min read
0 min read
time-icon
Widyanto Gunadi

Content palnner | Likes: Video games, music and drums, good reads, running, learning new things | Dislike: Overcomplicates simple things

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
 

0

Tags

Share

Apakah Kamu Sedang Mencari Pekerjaan?

    Already have an account? Login

    Artikel Terkait

    Ssstiktok_Download_Video_TikTok_tanpa_Watermark_Secara_Online_2022.jpg

    Technology

    SSSTikTok

    Sylvia Rheny

    19 December 2022
    5 min read
    H1-3_Cara_Mengatur_Margin_di_Word_Sesuai_Kebutuhan_Agar_Pekerjaanmu_Semakin_Mudah.PNG

    Technology

    3 Cara Mengatur Margin di Word Sesuai Kebutuhan Agar Pekerjaanmu Semakin Mudah

    Lita Lia

    05 December 2022
    4 min read
    aaron-weiss-_x6XZ_jp0g8-unsplash_(2).jpg

    Technology

    Cara Berjualan di TikTok Shop dan 6 Tips Agar Cepat Laris

    Fakhrizal Muttaqien

    05 December 2022
    6 min read

    Video