Memahami Rabbit MQ dari dasar

Nasri Adzlani
5 min readDec 27, 2023

--

Perusahaan-perusahaan kini beralih ke arah pengadopsian arsitektur berbasis mikroservis dalam aplikasi modern. Untuk menangani dan mendistribusikan beban kerja guna menjaga agar aplikasi berfungsi lancar dan cepat, penggunaan modul yang terlepas menjadi suatu kebutuhan. Message broker memungkinkan aplikasi berkomunikasi dan terlepas satu sama lain.

RabbitMQ adalah message broker open-source yang banyak digunakan yang membantu dalam meningkatkan skalabilitas aplikasi dengan menerapkan mekanisme antrian pesan di antara dua aplikasi. RabbitMQ menyediakan penyimpanan sementara untuk data guna mencegah kehilangan data. Antrian RabbitMQ mengambil pesan dari penerbit dan mengirimkannya ke konsumen.

RabbitMQ berfungsi sebagai platform perantara yang memastikan pesan terkirim ke tujuan yang tepat. Dalam artikel ini, Anda akan mempelajari tentang RabbitMQ, terminologi dasarnya, dan cara berkomunikasi melalui RabbitMQ. Anda juga akan menjelajahi langkah-langkah untuk membuat program Python yang mengirim pesan melalui Antrian RabbitMQ.

Apa itu RabbitMQ?

RabbitMQ adalah perangkat lunak message broker open-source yang ditulis dalam bahasa Erlang. Umumnya disebut sebagai middleware berorientasi pesan yang mengimplementasikan protokol AMQP (Advanced Message Queuing Protocol). RabbitMQ diperluas dengan arsitektur plugin untuk memberikan dukungan terhadap MQ Telemetry Transport (MQTT), Streaming Text Oriented Messaging Protocol (STOMP), dan protokol lainnya. RabbitMQ sangat skalabel dan menjamin ketersediaan data sepanjang waktu dengan arsitektur yang toleran terhadap kegagalan.

RabbitMQ mendukung banyak bahasa pemrograman dan dapat berjalan di berbagai lingkungan Cloud dan sistem operasi. Ini menawarkan antarmuka pengguna berbasis browser untuk pemantauan dan manajemen, dan juga dilengkapi dengan alat-alat CLI dan UI HTTP untuk operasi. RabbitMQ ringan dan mudah diterapkan di Cloud maupun on-premises. Selain itu, dapat diterapkan dalam konfigurasi terdistribusi maupun federasi untuk memberikan skalabilitas tinggi dan ketersediaan untuk memenuhi kebutuhan bisnis.

Konsep dasar RabbitMQ:

  1. Producer (Penghasil): Produsen adalah pihak yang mengirimkan pesan ke sebuah antrian berdasarkan nama antrian.
  2. Queue (Antrian): Antrian adalah struktur data berurutan yang menjadi media pengiriman dan penyimpanan pesan.
  3. Consumer (Konsumen): Konsumen adalah pihak yang berlangganan dan menerima pesan dari broker, lalu menggunakan pesan tersebut untuk operasi lain yang telah ditentukan.
  4. Exchange (Pertukaran): Pertukaran adalah titik masuk untuk broker karena mengambil pesan dari penerbit dan mengarahkan pesan-pesan tersebut ke antrian yang sesuai.
  5. Broker: Ini adalah message broker yang menyediakan penyimpanan untuk data yang dihasilkan. Data dimaksudkan untuk dikonsumsi atau diterima oleh aplikasi lain yang terhubung ke broker dengan parameter atau string koneksi tertentu.
  6. Channel (Saluran): Saluran menawarkan koneksi ringan ke broker melalui koneksi TCP bersama.

Fitur Utama RabbitMQ

Beberapa fitur utama RabbitMQ meliputi:

  1. Pengimplementasian Terdistribusi: Pengguna dapat menerapkan RabbitMQ sebagai kluster untuk ketersediaan dan throughput yang tinggi. Kluster ini diberdayakan di beberapa zona ketersediaan dan wilayah untuk selalu tersedia.
  2. Alat dan Plugin: RabbitMQ menawarkan berbagai alat dan plugin untuk integrasi berkelanjutan, metrik operasional, dan integrasi dengan sistem perusahaan lainnya.
  3. Siap Enterprise dan Cloud: RabbitMQ ringan dan mudah diterapkan di cloud publik maupun pribadi dengan menggunakan otorisasi otentikasi yang dapat dipasang.
  4. Pesan Asinkron: RabbitMQ mendukung berbagai protokol komunikasi, antrian pesan, pengakuan pengiriman, perutean ke antrian, dan berbagai jenis pertukaran.

Apa itu Antrian RabbitMQ?

Antrian RabbitMQ adalah struktur data berurutan di mana item dapat dimasukkan (enqueued) di bagian belakang atau diambil (dequeued) dari bagian depan. Penerbit dan Konsumen berkomunikasi menggunakan mekanisme penyimpanan mirip antrian. Antrian RabbitMQ mengikuti prinsip FIFO (First In First Out), tetapi juga menawarkan fitur-fitur antrian lainnya seperti prioritas dan re-queueing untuk mengubah urutan.

Antrian RabbitMQ memiliki nama sehingga aplikasi dapat merujuk padanya. Aplikasi memilih Antrian RabbitMQ berdasarkan nama atau meminta broker untuk membuat nama untuk membedakan dua Antrian RabbitMQ satu sama lain.

Properti Antrian RabbitMQ

Antrian RabbitMQ memiliki properti yang menentukan perilaku antrian tersebut. Ada beberapa properti yang wajib dan opsional dari Antrian RabbitMQ, seperti yang tercantum di bawah ini:

  1. Antrian RabbitMQ harus memiliki nama.
  2. Antrian RabbitMQ bersifat tahan lama agar dapat bertahan saat restart broker.
  3. Antrian RabbitMQ dapat bersifat Eksklusif, digunakan oleh satu koneksi saja, dan Antrian akan dihapus ketika koneksi ditutup.
  4. Antrian RabbitMQ akan otomatis dihapus ketika konsumen terakhir berhenti berlangganan.
  5. Antrian RabbitMQ memiliki argumen opsional seperti batas panjang antrian, TTL pesan, dll.

Bagaimana Antrian Pesan RabbitMQ Bekerja?

src:https://medium.com/turkcell/message-queues-in-action-rabbitmq-explained-98a002b73750

Dalam bagian ini, Anda akan mempelajari bagaimana alur pesan RabbitMQ terjadi. Berikut adalah prosedur berikut:

  1. Produsen pertama kali menerbitkan pesan ke pertukaran dengan tipe tertentu.
  2. Begitu pertukaran menerima pesan, pertukaran bertanggung jawab untuk merute pesan. Pertukaran merute pesan dengan mempertimbangkan parameter lain seperti tipe pertukaran, kunci rute, dll.
  3. Sekarang, pengikatan (binding) dibuat dari pertukaran ke Antrian RabbitMQ. Setiap Antrian memiliki nama yang membantu membedakannya. Kemudian pertukaran merute pesan ke Antrian berdasarkan atribut pesan.
  4. Begitu pesan dimasukkan dalam Antrian, pesan tetap berada di sana sampai ditangani oleh konsumen.
  5. Konsumen kemudian menangani pesan dari Antrian RabbitMQ.

Langkah-langkah Mengirim Pesan Melalui RabbitMQ

Sekarang bahwa Anda telah memahami apa itu RabbitMQ, terminologi dasarnya, dan bagaimana pesan mengalir melalui Antrian RabbitMQ. Dalam bagian ini, Anda akan melalui proses mengirim pesan melalui RabbitMQ menggunakan Python. Berikut adalah langkah-langkah untuk mengirim pesan melalui RabbitMQ:

  1. Mengirim Pesan:
  • Gunakan Pika, klien Python untuk RabbitMQ. Pastikan untuk menginstalnya dengan menjalankan `pip install pika`.
  • Import modul Pika dalam program Python Anda.
  • Atur koneksi ke server RabbitMQ menggunakan host, port, dan kredensial yang sesuai.
  • Buka saluran (channel) untuk komunikasi dengan RabbitMQ.
  • Deklarasikan antrian RabbitMQ yang akan digunakan.
  • Kirim pesan ke antrian menggunakan saluran yang telah dibuka.
  • Tutup saluran dan koneksi setelah mengirim pesan.

2. Menerima Pesan:

  • Buat program terpisah untuk menerima pesan.
  • Import modul Pika.
  • Atur koneksi ke server RabbitMQ dengan parameter yang sesuai.
  • Buka saluran untuk berkomunikasi.
  • Deklarasikan antrian RabbitMQ yang sesuai dengan antrian pengirim.
  • Tentukan fungsi callback yang akan menangani pesan saat diterima.
  • Daftarkan fungsi callback sebagai konsumen pada antrian.
  • Mulai konsumsi pesan dari antrian.
  • Tunggu atau terus jalankan program agar tetap mendengarkan pesan yang masuk.

Pastikan untuk menyesuaikan kode Python sesuai dengan kebutuhan aplikasi Anda. Dengan langkah-langkah ini, Anda akan dapat mengirim dan menerima pesan melalui RabbitMQ menggunakan bahasa pemrograman Python.

untuk penjelasan lebih lanjut bisa ke https://medium.com/@nasriadzlani/rabbitmq-on-docker-and-python-300e449fcc8c

Kesimpulan

Dengan memahami konsep dasar RabbitMQ, Anda sekarang memiliki dasar yang kokoh untuk memahami bagaimana pesan dikirim dan diterima melalui Antrian RabbitMQ. Penerapan teknologi ini, terutama dengan menggunakan bahasa pemrograman Python dan klien Pika, memberikan Anda kemampuan untuk mengoptimalkan proses komunikasi dalam aplikasi Anda.

RabbitMQ sebagai message broker membantu mengatasi tantangan dalam pengembangan aplikasi yang bersifat terdistribusi, memberikan skalabilitas, dan memastikan ketersediaan data. Dengan memanfaatkan konsep produsen, antrian, dan konsumen, Anda dapat merancang sistem yang efisien dan dapat diandalkan.

Teruslah eksplorasi dan penerapan RabbitMQ dalam proyek-proyek Anda untuk mengoptimalkan arsitektur mikroservis, mengimplementasikan pesan asinkron, dan meningkatkan kinerja aplikasi secara keseluruhan. Dengan pengetahuan ini, semoga Anda dapat menghadapi proyek-proyek teknologi dengan lebih percaya diri dan efektif. Selamat mengembangkan!

--

--

No responses yet