Implementasi Queue Di Laravel Framework - CRUDPRO

Implementasi Queue Di Laravel Framework

Implementasi Queue Di Laravel Framework

Perusahaan mungkin mengalami banyak tantangan saat mengelola layanan atau aplikasi mereka. Misalnya, perusahaan mungkin perlu mengirim email ke jutaan pengguna atau melakukan backup database. Semua operasi ini membutuhkan daya komputasi yang besar.

Menjalankan semua layanan ini sekaligus dapat memengaruhi kinerja aplikasi. Akibatnya, pengguna mungkin menjadi frustrasi karena penundaan yang lama. Laravel berusaha menyelesaikan masalah ini melalui penggunaan antrian.

Prasyarat

Untuk mengikuti, Anda harus menginstal Laravel 8 di komputer Anda. Memiliki pengetahuan tentang PHP dan Laravel juga penting. Komponen Laravel utama yang akan digunakan dalam proyek ini adalah Mail dan Jobs.

Tujuan

Pada akhir tutorial ini, Anda seharusnya dapat meningkatkan kinerja aplikasi Anda dengan menunda menjalankan layanan tertentu.

Apa itu antrian Laravel

Sebuah antrian melibatkan menempatkan hal-hal dalam rangka. Misalnya, sistem manajemen antrian dapat digunakan untuk melayani pelanggan dengan basis first-come-first-serve.

Ini tidak berbeda dengan antrian Laravel. Ini melayani pekerjaan yang sama dengan memastikan bahwa program atau layanan dijalankan dalam urutan tertentu.

Misalnya, Anda memiliki aplikasi yang mengharuskan pengguna untuk mendaftar dan kemudian mengirimi mereka One-Time-Password (OTP) atau bahkan email selamat datang. Meskipun ini adalah implementasi yang bagus, ini dapat memperlambat kinerja aplikasi. Antrian Laravel dapat membantu menyelamatkan situasi ini.

Mari kita mulai.

Mengonfigurasi antrian Laravel

Laravel menyediakan beberapa driver yang dapat kita gunakan untuk mengkonfigurasi antrian kita. Dalam tutorial ini, kita akan menggunakan driver database.

Dalam proyek ini, kami akan fokus pada pengiriman email menggunakan antrian Laravel.

Mulailah dengan menjalankan perintah berikut:

php artisan queue:table

Output:

Migration created successfully!

Perintah di atas mengatur aplikasi kita untuk menggunakan driver database untuk mengimplementasikan antrian. Itu juga membuat file migrasi dan tabel pekerjaan kami.

Ini file migrasi kami:

class CreateJobsTable extends Migration{

    // this method will create a database called jobs with its respective columns
    public function up(){
        Schema::create('jobs', function (Blueprint $table) { //we define our database columns here
            $table->bigIncrements('id');
            $table->string('queue')->index();
            $table->longText('payload');
            $table->unsignedTinyInteger('attempts');
            $table->unsignedInteger('reserved_at')->nullable();
            $table->unsignedInteger('available_at');
            $table->unsignedInteger('created_at');
        });
    }

    // this method is used to check if the table already exists
    public function down(){
        Schema::dropIfExists('jobs');
    }
}

Kami juga perlu memberi tahu Laravel bahwa kami akan menggunakan driver database dengan memperbarui file .env sebagai berikut:

QUEUE_CONNECTION=database

Dengan tabel pekerjaan kami siap, kami sekarang dapat menjalankan migrasi seperti yang ditunjukkan di bawah ini:

php artisan migrate
Sebelum menjalankan perintah migrasi di atas, pastikan file .env Anda memiliki kredensial database yang benar untuk menghindari kesalahan.

Output:

Migration table created successfully.
--------
Migrating: 2021_06_22_123248_create_jobs_table
Migrated:  2021_06_22_123248_create_jobs_table (117.97ms)

Menyiapkan email untuk menggunakan antrian Laravel

Di bagian ini, kita akan menggunakan kelas mailable untuk mengatur email kita.

Mari kita mulai dengan menjalankan perintah berikut:

php artisan make: mail TestHelloEmail

Output:

Mail created successfully.

Perintah di atas membuat file TestHelloMail.php di dalam direktori ./app/Mail.

Berikut adalah isi dari file TestHelloMail.php:

<?php

class TestHelloEmail extends Mailable{
    use Queueable, SerializesModels;

    public function __construct(){
        //
    }

    public function build(){
        return $this->view('view.name'); // returns a view to the user
    }
}

Karena kita telah membuat kelas mailable kita, navigasikan ke folder resources/views dan buat direktori baru bernama mail.

Di dalam folder ini, buat file baru dan beri nama testEmails.blade.php.

Sertakan baris HTML berikut dalam file testEmails.blade.php.

<p> My mailing queues testing</p>

Sekarang, mari kita perbarui file TestHelloEmail.php, seperti yang ditunjukkan di bawah ini:

public function build(){
        return $this->view('view.mail.testEmails');
 }

Langkah selanjutnya adalah membuat pekerjaan untuk mengelola email kita.

Di sini kita dapat menggunakan perintah berikut:

php artisan make:job TestSendEmail

Output:

 Job created successfully.

Perintah di atas akan membuat file testSendEmail.php di dalam folder app/jobs/.

Mari kita perbarui isinya sebagai berikut:

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

class TestSendEmail implements ShouldQueue{

    public function __construct(){
        //
    }

    public function handle(){
         $email = new TestHelloEmail();
        Mail::to('[email protected]')->send($email);
    }
}

Dalam file testSendEmail.php di atas, kita mengimpor fasad Mail dan kelas TestHelloEmail.php untuk mengimplementasikan antrian Laravel.

Menguji email

Pada langkah ini, kita perlu menambahkan pengontrol untuk menangani logika kita.

Untuk melakukannya, kami menggunakan perintah berikut:

php artisan make:controller TestQueueEmails

Output:

Controller created successfully.

Buka pengontrol yang dihasilkan dan edit sebagai berikut:

class TestQueueEmails extends Controller
{
    /**
    * test email queues
    **/
    public function sendTestEmails()
    {
        $emailJobs = new TestSendEmail();
        $this->dispatch($emailJobs);
    }
}

Kemudian tambahkan yang berikut ini di file rute Anda:

Implementasi Queue Di Laravel Framework

Saat Anda menavigasi ke http://localhost:8000/sending-queue-emails, Anda akan melihat pekerjaan telah ditambahkan di tabel pekerjaan.

Ketika kami ingin mengirimkan pekerjaan, kami menggunakan perintah berikut:

php artisan queue: work

Kesimpulan

Dalam tutorial ini, kita telah membahas proses implementasi antrian Laravel menggunakan pengirim email sederhana. Antrian Laravel dapat membantu pengembang meningkatkan kepuasan pengguna dengan menjalankan layanan kompleks hanya saat aplikasi tidak digunakan.

Anda dapat menggunakan pengetahuan ini untuk membuat aplikasi yang lebih kuat.

Selamat mengkode!