Belajar Message Broker dengan RabbitMQ menggunakan Go

Cecep Aprilianto
3 min readDec 2, 2022

--

Postingan ini akan menjelaskan cara implementasi Message Broker dengan RabbitMQ menggunakan Golang.

Apa itu Message Broker?

Merupakan bagian dari Messaging Microservice yang berguna sekali sebagai service tambahan diantara service-service yang terhubung agar data yang dikirim atau diterima setiap service dapat terkelola dengan baik. Jika kalian masih belum paham, tonton video penjelasan dari Eko Kurniawan Khannedy tentang apa itu Message Broker.

Apa itu RabbitMQ?

Ya message broker; Menerima dan meneruskan pesan (data). Anggaplah sebagai kantor pos: ketika Anda mau mengirim surat di kotak pos, Anda yakin bahwa tukang pos nantinya akan mengirimkan surat tersebut ke penerima Anda. Dalam analogi ini, RabbitMQ adalah kotak pos, kantor pos, dan tukang pos.

RabbitMQ, dan Messaging secara umum, menggunakan beberapa jargon.

  • Producer: adalah program yang mengirimkan pesan.
  • Queue: (antrian) adalah nama kotak pos di RabbitMQ. Banyak producer dapat mengirim pesan yang masuk ke satu antrean, dan banyak consumer dapat mencoba menerima data dari satu antrean.
  • Consumer: adalah program yang sebagian besar menunggu untuk menerima pesan.

Perhatikan bahwa producer, consumer, dan broker tidak harus ada di host yang sama. Aplikasi juga bisa menjadi producer dan consumer.

Prerequisites

  • Instal RabbitMQ, Anda bisa melihat cara installnya disini. Saya sendiri menggunakan Docker untuk menjalankannya.
  • Tentunya install Go. Disini caranya.

Jalankan RabbitMQ

Jalankan aplikasi RabbitMQ, jika berhasil kita dapat membuka dashboardnya di http://localhost:15672 dan akan muncul seperti berikut:

RabbitMQ Dashboard

Jika kalian menjalankan dengan kredensial yang berbeda, sesuaikan port dan konfigurasi lainnya.

Membuat Proyek

Kita akan membuat proyek sederhana untuk postingan kali ini, dimana Server dan Client atau kita sebut Producer dan Consumer dalam satu aplikasi saja. Dalam kenyataanya mungkin terpisah module/aplikasi.

Buka terminal dan buat folder module go seperti berikut:

mkdir belajar-rabbitmq
cd belajar-rabbitmq
go mod init belajar-rabbitmq

Buat folder dan file yang dibutuhkan seperti pada gambar berikut:

Struktur Proyek

Install RabbitMQ Client untuk Go

Selanjutnya kita install librarynya dulu, dengan perintah:

go get github.com/rabbitmq/amqp091-go

Membuat Server/Producer

Buka server/main.go dan isi dengan kode berikut:

Membuat Client/Consumer

Buka client/main.go dan isi dengan kode berikut:

Membuat Helper

Buka util/helper.go dan isi dengan kode berikut:

Menjalankan Server dan Client

Pertama, kita jalankan server terlebih dahulu. Buka terminal dan jalankan perintah berikut:

$ go run server/main.go

Jika berhasil maka akan ada output seperti berikut:

$ 2022/12/02 13:30:36  [x] Sent Hello World

Lalu, kita listening pesan dari server dengan menjalankan client, dengan perintah berikut pada terminal baru:

$ go run client/main.go

Jika berhasil maka akan ada output seperti berikut:

$ 2022/12/02 13:33:33  [*] Waiting for messages. To exit press CTRL+C
$ 2022/12/02 13:33:33 Received a message: Hello World

Jika kita running script server lagi, makan secara otomatis client akan menerima pesan tersebut dengan cepat. Namun, jika clientnya bermasalah, data pesan tersebut akan masuk kedalam antrian si RabbitMQ. Dan kalau cliennya menyala kembali, otomatis pesan tersebut akan langsung diterima.

Source Code

--

--