Langsung ke konten

Arsip

Messaging

7 artikel
Rekayasa Perangkat Lunak 22 Sep 2026 5 min read

Transactional Outbox Menutup Celah Commit antara Database dan Broker

Transactional Outbox Menutup Celah Commit antara Database dan Broker Sebuah service sering perlu mengubah state database sekaligus mengirim message. Order dapat berubah menjadi confirmed sementara event OrderConfirmed dikirim ke broker. Kedua tindakan tersebut menyentuh sistem terpisah, sehingga dua write biasa tidak dapat membentuk satu commit atomik kecuali kedua sistem ikut dalam distributed transaction. Bagian berbahaya berada pada interval di antara kedua write. Commit database lebih dahulu membuat process dapat gagal sebelum publish. Publish lebih dahulu membuat commit database dapat gagal sesudahnya. Membalik urutan hanya memindahkan failure window, bukan menghapusnya.

Rekayasa Perangkat Lunak 22 Sep 2026 6 min read

Dead-Letter Queue Mengisolasi Poison Message Tanpa Menghambat Progres

Dead-Letter Queue Mengisolasi Poison Message Tanpa Menghambat Progres Message consumer biasanya memperlakukan kegagalan sebagai kondisi sementara pada percobaan awal. Database mungkin tidak tersedia, remote service dapat timeout, atau worker dapat restart di antara penerimaan dan acknowledgment message. Retry tepat digunakan ketika percobaan berikutnya memiliki peluang masuk akal untuk berhasil. Sebagian message gagal karena sebab yang berbeda. Payload-nya rusak, entity yang dirujuk tidak akan pernah memenuhi kondisi wajib, atau consumer memiliki defect deterministik yang dipicu input tersebut. Delivery berulang kemudian menghabiskan kapasitas tanpa membawa message lebih dekat ke penyelesaian. Dead-letter queue memberi kegagalan itu tujuan terpisah setelah kebijakan retry normal habis.

Rekayasa Perangkat Lunak 21 Sep 2026 7 min read

Transactional Outbox Menutup Celah Dual-Write

Transactional Outbox Menutup Celah Dual-Write Sebuah service sering perlu mengubah state di database dan memublikasikan event untuk satu request. Kedua operasi itu tampak berdekatan di kode aplikasi, tetapi melewati boundary durability yang berbeda. Commit database dapat berhasil saat publish ke broker gagal, atau publish dapat berhasil sebelum transaksi database mengalami rollback. Pemisahan tersebut menghasilkan masalah dual-write. Mengubah urutan dua write independen tidak dapat membuat keduanya atomic dengan sendirinya. Pola transactional outbox mengubah boundary itu. Request menulis data bisnis dan record outbox dalam transaksi database lokal yang sama. Relay terpisah kemudian memublikasikan record outbox yang sudah commit ke broker. Publikasi menjadi asynchronous, tetapi intent yang durable untuk melakukan publish ikut commit bersama state yang memicunya.

Rekayasa Perangkat Lunak 21 Sep 2026 5 min read

Transactional Outbox Menutup Celah Commit antara Database dan Broker

Transactional Outbox Menutup Celah Commit antara Database dan Broker Sebuah service sering perlu mengubah state di database sekaligus memublikasikan message dalam satu request. Kedua aksi itu dapat terlihat berdekatan di application code, tetapi masing-masing memiliki commit boundary sendiri. Jika database dan broker tidak berbagi transaction protocol, dua write biasa tidak dapat dibuat atomic hanya dengan mengatur urutannya. Bayangkan order service menyimpan order yang diterima lalu mengirim OrderCreated. Publish setelah database commit menyisakan celah crash sebelum pemanggilan broker. Publish lebih dulu menghasilkan celah sebaliknya: consumer dapat menerima event untuk state yang akhirnya gagal commit.

Rekayasa Perangkat Lunak 20 Sep 2026 6 min read

Transactional Outbox Menjaga State Database dan Event Tetap Selaras

Sebuah service sering perlu mengubah state database sekaligus menerbitkan event dalam satu operasi. Sebuah order dapat berpindah ke status paid sementara OrderPaid harus sampai ke message broker. Kedua penulisan itu melewati sistem berbeda, sehingga transaksi database biasa tidak dapat membuat kedua commit menjadi atomik. Menulis ke database lebih dahulu menyisakan celah: proses dapat berhenti setelah commit tetapi sebelum event diterbitkan. Menerbitkan event lebih dahulu menciptakan celah sebaliknya: consumer dapat menerima event untuk perubahan database yang kemudian gagal.

Rekayasa Perangkat Lunak 19 Sep 2026 7 min read

Transactional Outbox Mengikat Perubahan State dengan Intensi Pesan

Service yang memperbarui database dan memublikasikan event ke message broker melewati dua batas commit yang independen. Jika commit database berhasil lalu publish ke broker gagal, state yang durable sudah ada tanpa pesan pasangannya. Membalik urutannya hanya membalik bentuk kegagalan: consumer dapat melihat pesan untuk perubahan state yang pada akhirnya tidak pernah commit. Transactional outbox mempersempit celah ini dengan menempatkan write aplikasi dan record pesan yang durable dalam transaksi database lokal yang sama. Proses publikasi dipindahkan ke relay terpisah. Pola ini tidak membuat database dan broker menjadi satu sistem atomik; batasnya diubah sehingga intensi pesan menjadi bagian dari commit database.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Notifikasi Prioritas Android Bukan Saluran VIP

Notifikasi Prioritas Android Bukan Saluran VIP Aplikasi Android bergaya pager dapat menyediakan tombol atau menu bernama saluran VIP, tetapi Android tidak mengubah label tersebut menjadi frekuensi radio privat, bearer seluler khusus, atau jalur delivery yang dijamin. Yang dapat dibangun aplikasi adalah kebijakan prioritas. Server dapat mengklasifikasikan event sebagai mendesak, meminta high-priority delivery dari Firebase Cloud Messaging (FCM), lalu menampilkan notifikasi melalui Android notification channel dengan importance tinggi. Kontrol tersebut bekerja pada layer yang berbeda, dan tidak satu pun sendirian memberikan jaminan delivery seperti yang sering dibayangkan dari sebuah pager.