Pembukaan
Halo teman-teman, kembali lagi di tutorial saya. Kali ini, kita akan membahas tutorial bagaimana cara manggunakan queue untuk mengirim e-mail pada Laravel 5.3.
Tentang Queue
Jadi, queue sendiri adalah satu fitur yang bisa membuat kita “menunda” sebuah proses yang memakan waktu yang cukup lama untuk menyelesaikannya karena cukup berat, sehingga dapat meningkatkan kecepatan request web kita dimana, request yang dilakukan bisa memberi response lebih cepat daripada jika proses dilakukan dengan synchronously.
Itu sekilas tentang queue, jadi di tutorial kali ini, kita akan coba mengimplementasikan queue dengan cara mengirim e-mail. Untuk tutorial kali ini, kita akan menggunakan mailtrap.io. Untuk tutorial tentang mengirim e-mail menggunakan mailtrap.io bisa dilihat disini. Mari langsung saja kita pelajari.
Di tutorial kali ini, kita akan menggunakan Laravel 5.3. Jika Anda belum menginstall Laravel versi 5.3. Silahkan install dengan menggunakan composer dengan perintah
composer create-project –prefer-dist laravel/laravel laravel5.3
- Pertama, mari kita setting dulu konfigurasi dari queue kita. Disini, kita menggunakan driver database sebagai penyimpan queue kita. Jadi, mari kita edit file konfigurasi kita di file .env
- Kemudian, mari kita buat table jobs yang akan menampung queue kita.
- Di terminal/command prompt ketikkan. Perintah ini akan membuat migration untuk table jobs kita secara otomatisphp artisan queue:table
- Setelah itu, kita migrate saja dengan perintahphp artisan migrate
- Setelah itu, mari kita atur routes kita terlebih dahulu.
- Seperti yang bisa kita lihat, kita mempunya beberapa routing disini, diantaranya:
- Untuk routing pertama kita, kita akan memberi sebuah form yang bisa diisi untuk mengirim e-mail.
- Lalu routing untuk mengirim e-mail itu sendiri
- Dan yang terakhir adalah tampilan setelah pengiriman e-mail selesai di proses.
- Seperti yang bisa kita lihat, kita mempunya beberapa routing disini, diantaranya:
- Sekarang, mari kita buat form nya.
- Kita buat saja form simple yang berisikan field:
- To: untuk siapa email ditujukan
- Subject: subject dari e-mail yang akan dikirim
- Mail_message: isi dari e-mail yang akan dikirim
- Kita buat saja form simple yang berisikan field:
- Setelah itu, mari kita buat class untuk mail kita. Untuk membuat mailable class, kita bisa menggunakan perintah php artisan. Ketikkan perintah ini di terminal/cmd.
php artisan make:mail SendEmail
- Setelah itu, mailable class kita sudah terbuat yang terletak di app/Mail dan sudah siap untuk kita gunakan
- Setelah itu, mari kita edit file tersebut dengan kebutuhan kita
- Pertama, mari kita tambahkan variable $mail_message dan $subject yang akan kita pakai dengan mendeklarasikannya.
- Lalu, pada function __construct(), kita set nilai dari variable tersebut.
- Di function build lah kita akan mengirim emailnya.
- $this->view(’email’) adalah view yang akan digunakan untuk mengirim e-mail
- subject adalah untuk menyertakan subject dari e-mail kita
- Kemudian, mari kita buat file view dari email kita (email.blade.php).
- Di file tersebut, cukup simple saja, kita hanya menampilkan isi message yang diinputkan oleh user dan telah kita sertakan pada parameter SendEmail.
- Catatan:
- Kita bisa langsung menggunakan variable yang ada di mailable class kita pada file view kita.
- Lalu, kita buat juga tampilan ketika request pada pengiriman e-mail kita telah selesai (viewAfter.blade.php).
- Disini, kita akan memberi notifikasi bahwa e-mail telah dikirim kepada penerima yang telah diinputkan sebelumnya.
- Nah, sekarang kita akan mengirim e-mail nya di EmailController kita.
- Pertama, mari kita coba kirimkan tanpa menggunakan queue
- Kita catat proses nya dengan Log.
- Untuk menggunakannya, kita harus use class tersebut dulu
use Illuminate\Support\Facades\Log;
- Log ini akan tercatat di storage/logs/laravel.log. Jadi nanti kita akan mencek nya di file tersebut.
- Untuk menggunakannya, kita harus use class tersebut dulu
- Disini, kita masih menggunakan function send untuk mengirim e-mail kita secara synchronously.
- Kita catat proses nya dengan Log.
- Sekarang, baru kita coba ganti dengan menggunakan queue.
- Disini, kita mengganti function send untuk mengirim email kita dengan function queue yang akan menambahkan proses ini ke table jobs pada database kita.
- Kemudian, kita harus mentrigger proses tersebut dengan mengetikkan perintah ini di terminal/cmd kita.
php artisan queue:listen
- Pertama, mari kita coba kirimkan tanpa menggunakan queue
- Seperti yang bisa kita lihat, e-mail nya sama-sama terkirim, tetapi dengan kecepatan response yang berbeda pada web kita. Mari kita coba cek di log yang tadi telah kita catat.
- Dengan queue
- Tanpa queue
- Bisa dilihat dengan jelas kan perbedaannya? Jadi, dengan queue, kita bisa meningkatkan request dari web kita dengan menaruh proses-proses yang berat atau memakan waktu di queue dan membiarkannya berjalan di belakang layar. Begitula kira-kira cara kerja queue.
- HASIL:
Kesimpulan
Dengan queue, kita bisa mengingkatkan request dari web kita dengan tidak membebankan nya pada proses-proses yang berat dan memakan waktu dengan cara membuatnya berjalan di belakang layar.
Oke teman-teman, terima kasih karena telah mengikuti tutorial kali ini bersama saya. Semoga dapat bermanfaat bagi teman-teman. Terima kasih! 🙂