Implementasi Microservices dengan Laravel Events Queues (part 2)

Implementasi Microservices dengan Laravel Events Queues (part 2)

Pada tutorial Implementasi Microservices dengan Laravel Events Queues (part 1) kita sudah membahas bagaimana cara untuk membuat events listeners pada laravel, pada kesempatan ini kita akan mencoba untuk menjalankan listener yang sudah kita buat tadi secara background dengan laravel queues. yuk disimak…

Introduction

Laravel Queues merupakan fitur queue yang ada pada laravel, saat ini laravel queues telah mensupport berbagai jenis queue system mulai dari database, redis, hingga AmazonSQS. dengan laravel queues ini kita bisa mengurangi proses yang memakan waktu proses lama pada aplikasi kita, dengan memasukkan proses itu dalam queue dan menjalankanya pada background system atau dijalankan oleh modul lain pada server lain. contoh proses yang biasanya dimasukkan ke queue diantaranya mengirim email register, re-kalkulasi inventory dan lainnya.

Goal

Pada tutorial ini tujuan kita adalah menjalankan listener yang kita buat tadi secara terpisah dengan aplikasi utama melalui queue. driver queue yang akan kita gunakan sekarang adalah driver database.

Menjalankan Laravel Events Listeners pada Queues

berikut adalah langkah-langkah untuk membuat aplikasi microservices menggunakan laravel events listeners dan queues:

Konfigurasi Driver Queues

Sebelum bisa menggunakan laravel queues kita harus melakukan setup driver yang akan kita gunakan, konfigurasi driver bisa kita temukan pada ‘config/queue.php’

kita juga bisa memilih driver yang kita gunakan melalui file environmnet ‘.env‘ kita sebagai berikut :

setelah seting configurasi, selanjutnya kita akan membuat table queue pada database kita dengan bantuan php artisan sebagai berikut :

kutipan diatas akan menjalankan perintah untuk membuat 2 table untuk queue yaitu table jobs untuk queue active dan failed_jobs untuk jobs yang gagal dijalankan sejumlah max retry, sebagai berikut :

laravel queue database

Konfigurasi class Listeners dengan Queues

Selanjutnya kita akan membuat sebuah class listeners dapat dijalankan dalam queues. agar listeners dapat dijalankan dalam queues kita harus meng-implement contracts ‘ShouldQueue’ pada class listener, dan jika ingin menggunakan fitur2 lainnya kita bisa menggunakan ‘use InteractsWithQueue’ didalan class, sebagai berikut:

Test Menjalankan Queues

Kita dapat melakukan testing apakah events listeners kita bisa masuk ke dalam queues dengan cara menjalankan aplikasi dan melihat isi table pada jobs, sebagai berikut :

test laravel events dengan queue

terlihat handle pada listener tidak dijalankan langsung ketika kita melakukan request, hal ini terjadi karena handle listener sudah dimasukkan ke dalam queues, kita dapat melihat queues pada table jobs, sebagai berikut:

laravel queues jobs

untuk menjalankan job pada queues kita harus menjalankan laravel queue listener pada server yang akan menjalankan job tersebut, sebagai berikut:

laravel queue listener job work

Bisa kita bayangkan jika jobs yang dijalankan adalah job berat misal mengirim email ke banyak user, atau copresi video/gambar akan membuat pengguna aplikasi jengkel akan aplikasi kita.

Troubleshoot Queues

Anda bisa mengecek job yang gagal dijalankan pada table failed_jobs yang telah dibuat tadi, jobs gagal akan secara otomatis dimasukkan ke table failed_jobs sesuai dengan setingan ‘–tries=[max retries]‘ ketika anda menjalankan queue listener.

Kesimpulan

Mengimplementasikan Microservices dengan laravel events listeners dan queues sangatlah membantu mempercepat aplikasi kita. kita bisa memecah proses – proses dari aplikasi menjadi blok-blok kecil, terpisah, dan fokus pada tugas-tugas ringan pada sistem, dan bisa dijalankan secara terdistribusi pada sistem yang berbeda.

Author: Wisnu Sudarmadi

Programmer juga nyambi di bidang system dan infrastuktur. Berpengalaman sebagai System Engineer sejak tahun 2013. Selama beberapa tahun terakhir bekerja di salah satu Bank BUMN.

Was this article helpful?

Related Articles