Der Laravel SQS Queue Reader ist eine leistungsstarke Erweiterung zur nahtlosen Integration externer Webhooks in Ihre Laravel-Anwendung. Durch die Nutzung der Zuverlässigkeit und Skalierbarkeit des Amazon Simple Queue Service (SQS) stellt diese Erweiterung sicher, dass Ihre Anwendung eingehende Webhooks effizient verarbeitet, Ausfallzeiten minimiert und die Gesamtleistung verbessert.
Integrieren Sie problemlos externe Webhooks in Ihre Laravel-Anwendung, ohne Kompromisse bei der Leistung einzugehen.
Nutzen Sie die Leistungsfähigkeit von Amazon SQS, um eingehende Webhooks in die Warteschlange zu stellen, was eine asynchrone und parallele Verarbeitung ermöglicht und optimale Antwortzeiten gewährleistet.
SQS bietet eine robuste und skalierbare Infrastruktur und stellt sicher, dass Ihre Anwendung unterschiedliche Webhook-Lasten bewältigen kann, ohne Kompromisse bei der Stabilität einzugehen.
Der als Laravel-Erweiterung konzipierte Webhook Queue Reader lässt sich nahtlos in Ihr Laravel-Projekt integrieren und folgt den Codierungsstandards und -konventionen von Laravel.
Passen Sie die Einstellungen der Erweiterung an die Anforderungen Ihrer Anwendung an, einschließlich Warteschlangennamen, Sichtbarkeits-Timeout und anderen SQS-spezifischen Konfigurationen.
Erhalten Sie Einblicke in den Webhook-Verarbeitungsablauf mit detaillierter Protokollierung und helfen Sie so, Fehler zu beheben und das System effektiv zu überwachen.
Registrieren Sie externe Webhooks bei Ihrer Laravel-Anwendung, indem Sie die Webhook-URL angeben.
Eingehende Webhooks werden effizient über die SQS-Warteschlange verarbeitet, wodurch eine optimale Verarbeitung der Webhook-Nutzlasten gewährleistet wird.
Nutzen Sie die asynchronen Verarbeitungsfunktionen von SQS, um Webhooks im Hintergrund zu verarbeiten und so Auswirkungen auf die Antwortzeiten Ihrer Anwendung zu vermeiden.
Profitieren Sie von den automatischen Wiederholungsversuchen von SQS und stellen Sie sicher, dass fehlgeschlagene Webhook-Verarbeitungsversuche ohne manuelles Eingreifen wiederholt werden.
Benutzerdefinierter SQS-Warteschlangenleser für Laravel-Projekte, der rohe JSON-Nutzlasten unterstützt und mehrere Nachrichten liest. Laravel erwartet, dass SQS-Nachrichten in einem bestimmten Format generiert werden, das eine Job-Handler-Klasse und einen serialisierten Job umfasst.
Hinweis: Implementiert, um mehrere Nachrichten aus der Warteschlange zu lesen.
Diese Bibliothek ist sehr nützlich, wenn Sie Nachrichten von Drittanbieteranwendungen wie Stripe-Webhooks, Shopify-Webhooks, Mailgun-Webhooks, benutzerdefinierten JSON-Nachrichten usw. analysieren möchten.
Installieren Sie den benutzerdefinierten SQS-Warteschlangenleser für Laravel über Composer:
composer require palpalani/laravel-sqs-queue-json-reader
Sie können die Konfigurationsdatei veröffentlichen und Ihre SQS-Einstellungen in der Laravel-Konfigurationsdatei konfigurieren.
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
Dies ist der Inhalt der veröffentlichten Konfigurationsdatei:
/**
* 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 ,
]
];
Wenn die Warteschlange nicht im Array „handlers“ gefunden wird, wird die SQS-Nutzlast an den Standardhandler übergeben.
Registrieren Sie Ihre Webhooks bei Ihrer Laravel-Anwendung.
Fügen Sie Ihrer config/queue.php sqs-json
-Verbindung hinzu, Beispiel:
[
// 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 ' ),
],
]
Wählen Sie in Ihrer .env-Datei sqs-json als Ihren neuen Standard-Warteschlangentreiber aus:
QUEUE_DRIVER=sqs-json
Genießen Sie eine nahtlose, zuverlässige und skalierbare Webhook-Verarbeitung!
Wenn Sie vorhaben, einfache Nachrichten von Laravel zu pushen, können Sie sich auf DispatcherJob verlassen:
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 ());
}
}
Der obige Code verschiebt das folgende JSON-Objekt in die SQS-Warteschlange:
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
Das Feld „Job“ wird eigentlich nicht verwendet. Es wird nur aus Kompatibilitätsgründen mit dem Laravel Framework beibehalten.
Führen Sie den folgenden Befehl aus, um den gesendeten Job zu testen.
php artisan queue:work sqs-json
Verwenden Sie für production
Supervisor mit der folgenden Konfiguration.
[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
Wenn Sie mehrere Verbindungen verwenden, duplizieren Sie die obige Supervisor-Konfiguration und ändern Sie den Verbindungsnamen.
Wenn eine Drittanbieteranwendung oder eine API-Gateway-zu-SQS-Implementierung JSON-Nachrichten im benutzerdefinierten Format erstellt, fügen Sie einfach einen Handler in die Konfigurationsdatei ein und implementieren Sie eine Handlerklasse wie folgt:
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 ());
}
}
Notiz:
Stellen Sie sicher, dass Ihre Laravel-Anwendung mit den erforderlichen AWS-Anmeldeinformationen und Berechtigungen für die Interaktion mit SQS konfiguriert ist.
Erweitern Sie die Webhook-Verarbeitungsfunktionen Ihrer Laravel-Anwendung mit dem Laravel Webhook Queue Reader. Effizient, zuverlässig und auf optimale Leistung ausgelegt!
Weitere Informationen zu AWS SQS finden Sie in den offiziellen Dokumenten.
Wir haben das Skript bereits konfiguriert, führen Sie einfach den Befehl aus:
composer test
Führen Sie für das Testabdeckungsformat den folgenden Befehl aus:
composer test-coverage
Führen Sie zur Codeanalyse den folgenden Befehl aus:
composer analyse
Führen Sie für das Codeformat den folgenden Befehl aus:
composer format
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
Weitere Informationen finden Sie unter BEITRAGEN.
Wenn Sie einen Beitrag leisten möchten, können Sie es in einem echten Laravel-Projekt testen:
/laravel-sqs-queue-json-reader
einen Zweig für Ihren Fix, z. B. feature/awesome-feature
. Installieren Sie die Pakete in der composer.json
Ihrer App:
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
Führen Sie nun composer update
aus.
GrumPHP-Rector-Aufgabe GrumPHP mit einer Aufgabe, die RectorPHP für Ihre Laravel-Projekte ausführt.
Überprüfung der E-Mail-Verweigerungsliste (Blacklist) - Überprüfung der IP-Verweigerungsliste (Blacklist) Die Überprüfung der Verweigerungsliste (Blacklist) testet die IP-Adresse eines Mailservers anhand von über 50 DNS-basierten E-Mail-Blacklists. (Üblicherweise als Echtzeit-Blacklist, DNSBL oder RBL bezeichnet).
Spamassassin-Spam-Score von E-Mails Überprüft den Spam-Score von E-Mail-Inhalten mithilfe der Spamassassin-Datenbank.
Laravel-Anmeldebenachrichtigungen Eine Anmeldeereignisbenachrichtigung für Laravel-Projekte. Standardmäßig werden Benachrichtigungen nur in der Produktionsumgebung gesendet.
Laravel Toastr Implementiert toastr.js für Laravel. Toastr.js ist eine Javascript-Bibliothek für nicht blockierende Benachrichtigungen.
Beast Beast ist Screenshot as a Service mit Nodejs, Chrome und Aws Lamda. Konvertieren Sie eine Webseite mit Headless Chrome in ein Bild. Macht einen Screenshot eines beliebigen URL-/HTML-Inhalts und gibt einen Base64-codierten Puffer zurück.
E-Commerce-Produktempfehlungen Analysieren Sie die Bestellhistorie von Kunden und empfehlen Sie Produkte für Neukunden, was ein höheres Verkaufsvolumen ermöglicht.
Bitte lesen Sie unsere Sicherheitsrichtlinie zum Melden von Sicherheitslücken.
Wenn Sie einen Fehler entdecken oder eine Frage oder einen Funktionswunsch haben, reichen Sie bitte ein detailliertes Problem ein und warten Sie auf Hilfe.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.