Laravel SQS Queue Reader adalah ekstensi kuat yang dirancang untuk mengintegrasikan webhook eksternal dengan mulus ke dalam aplikasi Laravel Anda. Dengan memanfaatkan keandalan dan skalabilitas Amazon Simple Queue Service (SQS), ekstensi ini memastikan aplikasi Anda memproses webhook masuk secara efisien, meminimalkan waktu henti, dan meningkatkan kinerja secara keseluruhan.
Integrasikan webhook eksternal dengan mudah ke dalam aplikasi Laravel Anda tanpa mengurangi kinerja.
Memanfaatkan kekuatan Amazon SQS untuk mengantri webhook masuk, memungkinkan pemrosesan asinkron dan paralel, memastikan waktu respons yang optimal.
SQS menyediakan infrastruktur yang kuat dan skalabel, memastikan aplikasi Anda dapat menangani berbagai beban webhook tanpa mengorbankan stabilitas.
Didesain sebagai ekstensi Laravel, Webhook Queue Reader terintegrasi dengan mulus ke dalam proyek Laravel Anda, mengikuti standar dan konvensi pengkodean Laravel.
Sesuaikan pengaturan ekstensi agar selaras dengan persyaratan aplikasi Anda, termasuk nama antrean, batas waktu visibilitas, dan konfigurasi khusus SQS lainnya.
Dapatkan wawasan tentang alur pemrosesan webhook dengan pencatatan log terperinci, membantu Anda memecahkan masalah dan memantau sistem secara efektif.
Daftarkan webhook eksternal dengan aplikasi Laravel Anda dengan memberikan URL webhook.
Webhook yang masuk diproses secara efisien melalui antrean SQS, memastikan penanganan muatan webhook secara optimal.
Manfaatkan kemampuan pemrosesan asinkron SQS untuk menangani webhook di latar belakang, sehingga mencegah dampak apa pun pada waktu respons aplikasi Anda.
Manfaatkan percobaan ulang otomatis SQS, memastikan bahwa upaya pemrosesan webhook yang gagal dicoba ulang tanpa intervensi manual.
Pembaca antrian SQS khusus untuk proyek Laravel yang mendukung payload JSON mentah dan membaca banyak pesan. Laravel mengharapkan pesan SQS dihasilkan dalam format tertentu yang mencakup kelas pengendali pekerjaan dan pekerjaan berseri.
Catatan: Diimplementasikan untuk membaca banyak pesan dari antrian.
Library ini sangat berguna ketika Anda ingin mengurai pesan dari aplikasi pihak ke-3 seperti stripe webhook, shopify webhook, mailgun webhook, pesan custom JSON dan lain sebagainya.
Instal pembaca antrian SQS Khusus untuk Laravel melalui komposer:
composer require palpalani/laravel-sqs-queue-json-reader
Anda dapat mempublikasikan file konfigurasi dan Konfigurasikan pengaturan SQS Anda di file konfigurasi Laravel.
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
Ini adalah isi file konfigurasi yang dipublikasikan:
/**
* List of plain SQS queues and their corresponding handling classes
*/
return [
// Separate queue handler with corresponding queue name as key.
' handlers ' => [
' stripe-webhooks ' => [
' class ' => App Jobs StripeHandler::class,
' count ' => 10 ,
],
' mailgun-webhooks ' => [
' class ' => App Jobs MailgunHandler::class,
' count ' => 10 ,
]
],
// If no handlers specified then default handler will be executed.
' default-handler ' => [
// Name of the handler class
' class ' => App Jobs SqsHandler::class,
// Number of messages need to read from SQS.
' count ' => 1 ,
]
];
Jika antrian tidak ditemukan dalam array 'handlers', payload SQS diteruskan ke handler default.
Daftarkan webhook Anda dengan aplikasi Laravel Anda.
Tambahkan koneksi sqs-json
ke config/queue.php Anda, Contoh:
[
// Add new SQS connection
' sqs-json ' => [
' driver ' => ' sqs-json ' ,
' key ' => env ( ' AWS_ACCESS_KEY_ID ' , '' ),
' secret ' => env ( ' AWS_SECRET_ACCESS_KEY ' , '' ),
' prefix ' => env ( ' AWS_SQS_PREFIX ' , ' https://sqs.us-west-2.amazonaws.com/1234567890 ' ),
' queue ' => env ( ' AWS_SQS_QUEUE ' , ' external-webhooks ' ),
' region ' => env ( ' AWS_DEFAULT_REGION ' , ' us-west-2 ' ),
],
]
Di file .env Anda, pilih sqs-json sebagai driver antrian default baru Anda:
QUEUE_DRIVER=sqs-json
Nikmati pemrosesan webhook yang lancar, andal, dan terukur!
Jika Anda berencana untuk mengirimkan pesan biasa dari Laravel, Anda dapat mengandalkan DispatcherJob:
use palPalani SqsQueueReader Jobs DispatcherJob ;
class ExampleController extends Controller
{
public function index ()
{
// Dispatch job with some data.
$ job = new DispatcherJob ([
' music ' => ' Ponni nathi from PS-1 ' ,
' singer ' => ' AR. Rahman ' ,
' time ' => time ()
]);
// Dispatch the job as you normally would
// By default, your data will be encapsulated in 'data' and 'job' field will be added
$ this -> dispatch ( $ job );
// If you wish to submit a true plain JSON, add setPlain()
$ this -> dispatch ( $ job -> setPlain ());
}
}
Kode di atas akan mendorong objek JSON berikut ke antrian SQS:
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
bidang 'pekerjaan' sebenarnya tidak digunakan. Itu hanya disimpan untuk kompatibilitas dengan Laravel Framework.
Jalankan perintah berikut untuk menguji pekerjaan yang dikirim.
php artisan queue:work sqs-json
Untuk production
, gunakan supervisor dengan konfigurasi berikut.
[program:sqs-json-reader]
process_name=%(program_name)s_%(process_num)02d
command=php /var/html/app/artisan queue:work sqs-json --sleep=60 --timeout=10 --tries=2 --memory=128 --daemon
directory=/var/html/app
autostart=true
autorestart=true
startretries=10
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/html/app/horizon.log
stderr_logfile=/tmp/horizon-error.log
stopwaitsecs=3600
priority=1000
Jika Anda menggunakan banyak koneksi, duplikat konfigurasi supervisor di atas dan ubah nama koneksi.
Jika aplikasi pihak ketiga atau implementasi API Gateway ke SQS membuat pesan JSON format khusus, cukup tambahkan handler di file konfigurasi dan implementasikan kelas handler sebagai berikut:
use Illuminate Contracts Queue Job as LaravelJob ;
class SqsHandlerJob extends Job
{
/**
* @var null|array $data
*/
protected $ data ;
/**
* @param LaravelJob $job
* @param null|array $data
*/
public function handle ( LaravelJob $ job , ? array $ data ): void
{
// This is incoming JSON payload, already decoded to an array
var_dump ( $ data );
// Raw JSON payload from SQS, if necessary
var_dump ( $ job -> getRawBody ());
}
}
Catatan:
Pastikan aplikasi Laravel Anda dikonfigurasi dengan kredensial dan izin AWS yang diperlukan untuk berinteraksi dengan SQS.
Tingkatkan kemampuan pemrosesan webhook aplikasi Laravel Anda dengan Laravel Webhook Queue Reader. Efisien, andal, dan dirancang untuk kinerja optimal!
Untuk informasi selengkapnya tentang AWS SQS, periksa dokumen resmi.
Kami sudah mengkonfigurasi skrip, jalankan saja perintah:
composer test
Untuk format cakupan pengujian, jalankan perintah:
composer test-coverage
Untuk analisis kode, jalankan perintah:
composer analyse
Untuk format kode, jalankan perintah:
composer format
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
Silakan lihat KONTRIBUSI untuk rinciannya.
Jika Anda ingin berkontribusi, Anda mungkin ingin mengujinya di proyek Laravel yang sebenarnya:
/laravel-sqs-queue-json-reader
, buatlah cabang untuk perbaikan Anda, misalnya feature/awesome-feature
. Instal paket di composer.json
aplikasi Anda :
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
Sekarang, jalankan composer update
.
Tugas rektor GrumPHP GrumPHP dengan tugas yang menjalankan RectorPHP untuk proyek Laravel Anda.
Pemeriksaan Daftar Penolakan Email (daftar hitam) - Daftar Penolakan IP (daftar hitam) Pemeriksaan Daftar Penolakan (daftar hitam) pemeriksa akan menguji alamat IP server email terhadap lebih dari 50 daftar hitam email berbasis DNS. (Biasa disebut Daftar hitam realtime, DNSBL atau RBL).
Skor spam spamassassin email Memeriksa skor spam konten email menggunakan database spamassassin.
Notifikasi Login Laravel Notifikasi acara login untuk proyek Laravel. Secara default, ini akan mengirimkan notifikasi hanya pada lingkungan produksi saja.
Laravel Toastr Mengimplementasikan toastr.js untuk Laravel. Toastr.js adalah perpustakaan Javascript untuk notifikasi non-pemblokiran.
Beast Beast adalah Screenshot sebagai Layanan menggunakan Nodejs, Chrome dan Aws Lamda. Mengonversi laman web menjadi gambar menggunakan Chrome tanpa kepala. Mengambil tangkapan layar dari konten URL/Html apa pun dan mengembalikan buffer berkode base64.
Rekomendasi Produk eCommerce Analisis riwayat pesanan pelanggan dan rekomendasikan produk untuk pelanggan baru yang memungkinkan volume penjualan lebih tinggi.
Harap tinjau kebijakan keamanan kami tentang cara melaporkan kerentanan keamanan.
Jika Anda menemukan bug atau memiliki pertanyaan atau permintaan fitur, kirimkan masalah mendetail, dan tunggu bantuan.
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.