Loading
  • Axa Rajandrya
  • Date:  20 Jun 2026
  • Read:  2 min
  • Web Development

Memindahkan pekerjaan berat ke queue, dan jebakan yang menyertainya

Cover image of Memindahkan pekerjaan berat ke queue, dan jebakan yang menyertainya

Form pendaftaran terasa lambat karena satu hal: mengirim email. Pengguna menunggu server menghubungi SMTP, dan kalau SMTP-nya sedang lambat, halaman ikut menggantung. Memindahkan pengiriman ke queue menyelesaikan itu dalam beberapa baris.

Yang tidak saya sadari, saya sedang menukar satu masalah dengan masalah lain.

Kegagalan yang tidak bersuara

Ketika pengiriman berjalan langsung di dalam request, kegagalan terlihat seketika. Ketika ia berpindah ke antrean, kegagalan pindah ke tempat yang tidak dilihat siapa pun. Selama tidak ada worker yang berjalan, pekerjaan hanya menumpuk di tabel jobs, dan halaman tetap membalas "berhasil" dengan gembira.

Saya baru tahu setelah ada yang bertanya kenapa emailnya tidak masuk.

Cara saya memutuskan sekarang

Sebelum memindahkan sesuatu ke queue, saya tanya dua hal:

  1. Apakah pengguna butuh hasilnya sekarang? Kalau ya, jangan diantrekan.
  2. Kalau pekerjaan ini gagal diam-diam, siapa yang akan tahu, dan dari mana?

Kalau jawaban pertanyaan kedua adalah "tidak ada", berarti saya belum siap memakai queue untuk pekerjaan itu.

Untuk kasus email pendaftaran, saya akhirnya tidak memakai antrean sama sekali. Pengiriman dijalankan setelah respons dikirim ke peramban, dan kegagalannya dicatat ke log tanpa menggagalkan pendaftaran. Halaman tetap cepat, dan kalau SMTP bermasalah, jejaknya ada.

Antrean tetap berguna

Untuk pekerjaan yang memang panjang, misalnya memproses berkas besar atau menyusun laporan, antrean tetap pilihan yang benar. Syaratnya cuma satu: pastikan ada yang menjalankan worker-nya, dan pastikan kegagalannya terlihat. Antrean tanpa pemantauan bukan menghilangkan masalah, ia cuma memindahkannya ke tempat yang lebih gelap.

Related articles

Ready to bring your ideas to life? I'm here to help

© 2026 Axa Rajandrya. All rights reserved.

+
+