Komunikasi Antar-Layanan dengan Antrean Pesan
Pelajari cara microservice berkomunikasi secara asinkron menggunakan antrean pesan seperti RabbitMQ, sehingga layanan tidak saling bergantung langsung dan ketahanannya meningkat.
Komunikasi Antar-Layanan dengan Antrean Pesan adalah pelajaran Node.js Backend Development Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Node.js Backend Development Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Node.js Backend Development Bootcamp mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Synchronous vs Asynchronous Communication
Microservices can talk in two ways:
- Synchronous (HTTP/gRPC): the caller waits for a reply
- Asynchronous (messaging): the caller sends a message and moves on
Async communication decouples services so a slow or down consumer does not block the producer.
What is a Message Queue?
A message queue is a buffer that holds messages until a consumer is ready to process them. Producers push messages in; consumers pull them out — usually in FIFO order.
Popular brokers include RabbitMQ, Kafka, and Redis Streams.
Key Benefits
Queues bring real advantages to a microservice system:
- Decoupling: services do not need to know about each other
- Resilience: messages wait if a consumer is down
- Load leveling: bursts are smoothed out
- Scalability: add more consumers to process faster
Core Concepts
Three roles define the pattern:
- Producer: publishes messages
- Queue: stores them
- Consumer: receives and processes them
In RabbitMQ an exchange sits between producer and queue, deciding routing.
Connecting from Node.js
The amqplib package connects Node.js to RabbitMQ. You open a connection, then a channel for sending and receiving.
const amqp = require('amqplib');
const conn = await amqp.connect('amqp://localhost');
const channel = await conn.createChannel();Declaring a Queue
Before sending, declare the queue so it exists. The durable option makes it survive a broker restart.
await channel.assertQueue('orders', { durable: true });Publishing a Message
Send a message with sendToQueue. Messages are buffers, so serialize objects to JSON first.
const order = { id: 7, total: 99 };
channel.sendToQueue('orders', Buffer.from(JSON.stringify(order)), {
persistent: true
});Consuming Messages
A consumer subscribes with consume. Each delivered message is parsed and processed.
channel.consume('orders', (msg) => {
const order = JSON.parse(msg.content.toString());
console.log('Processing order', order.id);
});Acknowledgements
To avoid losing work if a consumer crashes, RabbitMQ waits for an ack. Only after you call channel.ack(msg) is the message removed from the queue.
channel.consume('orders', (msg) => {
handle(JSON.parse(msg.content.toString()));
channel.ack(msg);
});Publish/Subscribe with Fanout
Sometimes many services need the same event (e.g. order placed). A fanout exchange broadcasts a message to every bound queue, enabling the publish/subscribe pattern.
await channel.assertExchange('events', 'fanout');
channel.publish('events', '', Buffer.from('order.created'));Handling Failures
Robust messaging plans for errors:
- Retries for transient failures
- Dead-letter queues for messages that keep failing
- Idempotency so reprocessing the same message is safe
Quick Check
Test your messaging knowledge.
Recap
You learned asynchronous inter-service communication:
- Message queues decouple producers from consumers
- Connect with
amqplib, declare durable queues - Publish with
sendToQueue, consume withconsume - Use
ackto guarantee delivery - Fanout exchanges enable pub/sub; dead-letter queues handle failures
Messaging makes microservice systems resilient and scalable.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Komunikasi Antar-Layanan dengan Antrean Pesan” gratis?
Ya — teks lengkap “Komunikasi Antar-Layanan dengan Antrean Pesan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Node.js Backend Development Bootcamp, upgrade ke CoddyKit PRO. Kursus Node.js Backend Development Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Komunikasi Antar-Layanan dengan Antrean Pesan”?
Pelajari cara microservice berkomunikasi secara asinkron menggunakan antrean pesan seperti RabbitMQ, sehingga layanan tidak saling bergantung langsung dan ketahanannya meningkat. Kamu berlatih Node.js Backend Development Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Node.js Backend Development Bootcamp?
Tidak diperlukan pengalaman sebelumnya. Node.js Backend Development Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Komunikasi Antar-Layanan dengan Antrean Pesan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Node.js Backend Development Bootcamp ini?
Ya. Setiap pelajaran Node.js Backend Development Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengantar Arsitektur Layanan Mikro
- Mengembangkan Layanan Mikro Node.js
- Menerapkan API Gateway
- Komunikasi Antar-Layanan dengan Antrean Pesan