Laravel SQS Queue Reader เป็นส่วนขยายที่ทรงพลังซึ่งออกแบบมาเพื่อรวมเว็บฮุคภายนอกเข้ากับแอปพลิเคชัน Laravel ของคุณได้อย่างราบรื่น ด้วยการใช้ประโยชน์จากความน่าเชื่อถือและความสามารถในการปรับขนาดของ Amazon Simple Queue Service (SQS) ส่วนขยายนี้ช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณประมวลผล Webhook ขาเข้าได้อย่างมีประสิทธิภาพ ลดเวลาหยุดทำงานและเพิ่มประสิทธิภาพโดยรวม
รวม webhooks ภายนอกเข้ากับแอปพลิเคชัน Laravel ของคุณได้อย่างง่ายดายโดยไม่กระทบต่อประสิทธิภาพ
ควบคุมพลังของ Amazon SQS เพื่อจัดคิวเว็บฮุคขาเข้า ทำให้เกิดการประมวลผลแบบอะซิงโครนัสและแบบขนาน เพื่อให้มั่นใจได้ถึงเวลาตอบสนองที่เหมาะสมที่สุด
SQS มอบโครงสร้างพื้นฐานที่แข็งแกร่งและปรับขนาดได้ เพื่อให้มั่นใจว่าแอปพลิเคชันของคุณสามารถรับมือกับโหลดเว็บฮุคที่แตกต่างกันได้โดยไม่กระทบต่อความเสถียร
Webhook Queue Reader ได้รับการออกแบบให้เป็นส่วนขยาย Laravel โดยจะผสานรวมเข้ากับโปรเจ็กต์ Laravel ของคุณได้อย่างราบรื่น ตามมาตรฐานและแบบแผนการเข้ารหัสของ Laravel
ปรับแต่งการตั้งค่าส่วนขยายเพื่อให้สอดคล้องกับข้อกำหนดของแอปพลิเคชันของคุณ รวมถึงชื่อคิว การหมดเวลาการมองเห็น และการกำหนดค่าเฉพาะ SQS อื่นๆ
รับข้อมูลเชิงลึกเกี่ยวกับขั้นตอนการประมวลผล Webhook พร้อมการบันทึกโดยละเอียด ช่วยให้คุณแก้ไขปัญหาและตรวจสอบระบบได้อย่างมีประสิทธิภาพ
ลงทะเบียน webhooks ภายนอกด้วยแอปพลิเคชัน Laravel ของคุณโดยระบุ URL ของ webhook
เว็บฮุคที่เข้ามาได้รับการประมวลผลอย่างมีประสิทธิภาพผ่านคิว SQS ทำให้มั่นใจได้ถึงการจัดการเพย์โหลดของเว็บฮุคอย่างเหมาะสมที่สุด
ใช้ประโยชน์จากความสามารถในการประมวลผลแบบอะซิงโครนัสของ SQS เพื่อจัดการกับ webhook ในเบื้องหลัง ป้องกันผลกระทบใดๆ ต่อเวลาตอบสนองของแอปพลิเคชันของคุณ
ประโยชน์จากการลองใหม่อัตโนมัติของ SQS ทำให้มั่นใจได้ว่าความพยายามในการประมวลผล webhook ที่ล้มเหลวจะถูกลองใหม่โดยไม่มีการแทรกแซงด้วยตนเอง
เครื่องอ่านคิว SQS แบบกำหนดเองสำหรับโปรเจ็กต์ Laravel ที่รองรับเพย์โหลด JSON แบบดิบและอ่านหลายข้อความ Laravel คาดว่าข้อความ SQS จะถูกสร้างขึ้นในรูปแบบเฉพาะซึ่งรวมถึงคลาสตัวจัดการงานและงานที่ต่อเนื่องกัน
หมายเหตุ: นำไปใช้เพื่ออ่านข้อความหลายข้อความจากคิว
ไลบรารีนี้มีประโยชน์มากเมื่อคุณต้องการแยกวิเคราะห์ข้อความจากแอปพลิเคชันบุคคลที่สาม เช่น stripe webhooks, shopify webhooks, mailgun web hooks, ข้อความ JSON แบบกำหนดเอง และอื่นๆ
ติดตั้งโปรแกรมอ่านคิว SQS แบบกำหนดเองสำหรับ Laravel ผ่านผู้แต่ง:
composer require palpalani/laravel-sqs-queue-json-reader
คุณสามารถเผยแพร่ไฟล์กำหนดค่าและกำหนดการตั้งค่า SQS ของคุณในไฟล์การกำหนดค่า Laravel
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
นี่คือเนื้อหาของไฟล์กำหนดค่าที่เผยแพร่:
/**
* 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 ,
]
];
หากไม่พบคิวในอาร์เรย์ 'ตัวจัดการ' เพย์โหลด SQS จะถูกส่งไปยังตัวจัดการเริ่มต้น
ลงทะเบียน webhooks ของคุณด้วยแอปพลิเคชัน Laravel
เพิ่มการเชื่อมต่อ sqs-json
ไปยัง config/queue.php ของคุณ ตัวอย่าง:
[
// 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 ' ),
],
]
ในไฟล์ .env ของคุณ ให้เลือก sqs-json เป็นไดรเวอร์คิวเริ่มต้นใหม่:
QUEUE_DRIVER=sqs-json
เพลิดเพลินกับการประมวลผลเว็บฮุคที่ราบรื่น เชื่อถือได้ และปรับขนาดได้!
หากคุณวางแผนที่จะส่งข้อความธรรมดาจาก Laravel คุณสามารถไว้วางใจ 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 ());
}
}
โค้ดด้านบนจะพุชออบเจ็กต์ JSON ต่อไปนี้ไปที่คิว SQS:
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
จริงๆ แล้วฟิลด์ 'งาน' ไม่ได้ถูกใช้ มันถูกเก็บไว้เพื่อให้เข้ากันได้กับ Laravel Framework
รันคำสั่งต่อไปนี้เพื่อทดสอบงานที่จัดส่งไป
php artisan queue:work sqs-json
สำหรับ production
ให้ใช้หัวหน้างานที่มีการกำหนดค่าต่อไปนี้
[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
หากคุณใช้การเชื่อมต่อหลายรายการ ให้ทำซ้ำการกำหนดค่าของผู้ควบคุมด้านบนและเปลี่ยนชื่อการเชื่อมต่อ
หากแอปพลิเคชันของบริษัทอื่นหรือการนำ API Gateway ไปใช้กับ SQS กำลังสร้างข้อความ JSON รูปแบบที่กำหนดเอง เพียงเพิ่มตัวจัดการในไฟล์กำหนดค่า และใช้คลาสตัวจัดการดังต่อไปนี้:
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 ());
}
}
บันทึก:
ตรวจสอบให้แน่ใจว่าแอปพลิเคชัน Laravel ของคุณได้รับการกำหนดค่าด้วยข้อมูลประจำตัว AWS ที่จำเป็นและสิทธิ์ในการโต้ตอบกับ SQS
ปรับปรุงความสามารถในการประมวลผลเว็บฮุคของแอปพลิเคชัน Laravel ด้วย Laravel Webhook Queue Reader มีประสิทธิภาพ เชื่อถือได้ และออกแบบมาเพื่อประสิทธิภาพสูงสุด!
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ AWS SQS โปรดตรวจสอบเอกสารอย่างเป็นทางการ
เราได้กำหนดค่าสคริปต์ไว้แล้ว เพียงรันคำสั่ง:
composer test
สำหรับรูปแบบความครอบคลุมการทดสอบ ให้รันคำสั่ง:
composer test-coverage
สำหรับการวิเคราะห์โค้ด ให้รันคำสั่ง:
composer analyse
สำหรับรูปแบบโค้ด ให้รันคำสั่ง:
composer format
โปรดดู CHANGELOG สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงเมื่อเร็วๆ นี้
โปรดดูการมีส่วนร่วมเพื่อดูรายละเอียด
หากคุณต้องการมีส่วนร่วม คุณอาจต้องการทดสอบในโปรเจ็กต์ Laravel จริง:
/laravel-sqs-queue-json-reader
ให้สร้างสาขาสำหรับการแก้ไขของคุณ เช่น feature/awesome-feature
ติดตั้งแพ็คเกจใน composer.json
ของแอปของคุณ :
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
ตอนนี้ให้เรียกใช้ composer update
งาน RectorPHP ของ GrumPHP GrumPHP พร้อมงานที่รัน RectorPHP สำหรับโครงการ Laravel ของคุณ
การตรวจสอบรายการปฏิเสธอีเมล (บัญชีดำ) - รายการปฏิเสธ IP (บัญชีดำ) ตรวจสอบรายการปฏิเสธ (บัญชีดำ) ตัวตรวจสอบจะทดสอบที่อยู่ IP ของเซิร์ฟเวอร์อีเมลกับบัญชีดำอีเมลที่ใช้ DNS มากกว่า 50 รายการ (โดยทั่วไปเรียกว่าบัญชีดำแบบเรียลไทม์, DNSBL หรือ RBL)
คะแนนสแปมของ Spamassassin ของอีเมล ตรวจสอบคะแนนสแปมของเนื้อหาอีเมลโดยใช้ฐานข้อมูลสแปมของ Spamassassin
การแจ้งเตือนการเข้าสู่ระบบ Laravel การแจ้งเตือนเหตุการณ์การเข้าสู่ระบบสำหรับโครงการ Laravel โดยค่าเริ่มต้น จะส่งการแจ้งเตือนเฉพาะในสภาพแวดล้อมการผลิตเท่านั้น
Laravel Toastr ใช้งาน toastr.js สำหรับ Laravel Toastr.js เป็นไลบรารี Javascript สำหรับการแจ้งเตือนที่ไม่บล็อก
Beast Beast เป็นภาพหน้าจอเป็นบริการที่ใช้ Nodejs, Chrome และ Aws Lamda แปลงหน้าเว็บเป็นรูปภาพโดยใช้ Chrome ที่ไม่มีส่วนหัว จับภาพหน้าจอของเนื้อหา URL/Html ที่ระบุและส่งคืนบัฟเฟอร์ที่เข้ารหัส base64
การแนะนำผลิตภัณฑ์อีคอมเมิร์ซ วิเคราะห์ประวัติการสั่งซื้อของลูกค้าและแนะนำผลิตภัณฑ์สำหรับลูกค้าใหม่ซึ่งช่วยให้ยอดขายเพิ่มขึ้น
โปรดตรวจสอบนโยบายความปลอดภัยของเราเกี่ยวกับวิธีการรายงานจุดอ่อนด้านความปลอดภัย
หากคุณพบข้อบกพร่องหรือมีคำถามหรือคำขอคุณสมบัติ โปรดส่งปัญหาโดยละเอียดและรอความช่วยเหลือ
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม