Le Laravel SQS Queue Reader est une extension puissante conçue pour intégrer de manière transparente des webhooks externes dans votre application Laravel. En tirant parti de la fiabilité et de l'évolutivité d'Amazon Simple Queue Service (SQS), cette extension garantit que votre application traite efficacement les webhooks entrants, minimisant ainsi les temps d'arrêt et améliorant les performances globales.
Intégrez facilement des webhooks externes dans votre application Laravel sans compromettre les performances.
Exploitez la puissance d'Amazon SQS pour mettre en file d'attente les webhooks entrants, permettant un traitement asynchrone et parallèle, garantissant des temps de réponse optimaux.
SQS fournit une infrastructure robuste et évolutive, garantissant que votre application peut gérer différentes charges de webhooks sans compromettre la stabilité.
Conçu comme une extension Laravel, le Webhook Queue Reader s'intègre de manière transparente à votre projet Laravel, en suivant les normes et conventions de codage de Laravel.
Personnalisez les paramètres de l'extension pour les aligner sur les exigences de votre application, notamment les noms de files d'attente, le délai d'expiration de la visibilité et d'autres configurations spécifiques à SQS.
Obtenez des informations sur le flux de traitement des webhooks grâce à une journalisation détaillée, ce qui vous aidera à dépanner et à surveiller efficacement le système.
Enregistrez des webhooks externes avec votre application Laravel en fournissant l'URL du webhook.
Les webhooks entrants sont traités efficacement via la file d'attente SQS, garantissant une gestion optimale des charges utiles des webhooks.
Tirez parti des capacités de traitement asynchrone de SQS pour gérer les webhooks en arrière-plan, évitant ainsi tout impact sur les temps de réponse de votre application.
Bénéficiez des tentatives automatiques de SQS, garantissant que les tentatives de traitement de webhook ayant échoué seront retentées sans intervention manuelle.
Lecteur de file d'attente SQS personnalisé pour les projets Laravel qui prend en charge les charges utiles JSON brutes et lit plusieurs messages. Laravel s'attend à ce que les messages SQS soient générés dans un format spécifique qui inclut une classe de gestionnaire de tâches et une tâche sérialisée.
Remarque : implémenté pour lire plusieurs messages de la file d'attente.
Cette bibliothèque est très utile lorsque vous souhaitez analyser des messages provenant d'applications tierces telles que des webhooks Stripe, des webhooks Shopify, des webhooks Mailgun, des messages JSON personnalisés, etc.
Installez le lecteur de file d'attente SQS personnalisé pour Laravel via composer :
composer require palpalani/laravel-sqs-queue-json-reader
Vous pouvez publier le fichier de configuration et configurer vos paramètres SQS dans le fichier de configuration Laravel.
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
Voici le contenu du fichier de configuration publié :
/**
* 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 ,
]
];
Si la file d'attente n'est pas trouvée dans le tableau « handlers », la charge utile SQS est transmise au gestionnaire par défaut.
Enregistrez vos webhooks avec votre application Laravel.
Ajoutez une connexion sqs-json
à votre config/queue.php, exemple :
[
// 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 ' ),
],
]
Dans votre fichier .env, choisissez sqs-json comme nouveau pilote de file d'attente par défaut :
QUEUE_DRIVER=sqs-json
Profitez d’un traitement de webhook transparent, fiable et évolutif !
Si vous envisagez de transmettre des messages simples depuis Laravel, vous pouvez compter sur 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 ());
}
}
Le code ci-dessus poussera l'objet JSON suivant vers la file d'attente SQS :
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
Le champ « travail » n'est pas utilisé, en fait. Il est simplement conservé pour des raisons de compatibilité avec Laravel Framework.
Exécutez la commande suivante pour tester la tâche distribuée.
php artisan queue:work sqs-json
Pour production
, utilisez Supervisor avec la configuration suivante.
[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
Si vous utilisez plusieurs connexions, dupliquez la configuration du superviseur ci-dessus et modifiez le nom de la connexion.
Si une application tierce ou une implémentation d'API Gateway to SQS crée des messages JSON au format personnalisé, ajoutez simplement un gestionnaire dans le fichier de configuration et implémentez une classe de gestionnaire comme suit :
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 ());
}
}
Note:
Assurez-vous que votre application Laravel est configurée avec les informations d'identification et autorisations AWS nécessaires pour interagir avec SQS.
Améliorez les capacités de traitement des webhooks de votre application Laravel avec le Laravel Webhook Queue Reader. Efficace, fiable et conçu pour des performances optimales !
Pour plus d'informations sur AWS SQS, consultez la documentation officielle.
Nous avons déjà configuré le script, exécutez simplement la commande :
composer test
Pour le format de couverture de test, exécutez la commande :
composer test-coverage
Pour analyser le code, exécutez la commande :
composer analyse
Pour le format du code, exécutez la commande :
composer format
Veuillez consulter CHANGELOG pour plus d'informations sur ce qui a changé récemment.
Veuillez consulter CONTRIBUER pour plus de détails.
Si vous souhaitez contribuer, vous souhaiterez peut-être le tester dans un vrai projet Laravel :
/laravel-sqs-queue-json-reader
, créez une branche pour votre correctif, par exemple feature/awesome-feature
. Installez les packages dans composer.json
de votre application :
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
Maintenant, exécutez composer update
.
Tâche de recteur GrumPHP GrumPHP avec une tâche qui exécute RectorPHP pour vos projets Laravel.
Vérification de la liste de refus d'e-mail (liste noire) - Le vérificateur de liste de refus IP (liste noire) vérifiera la liste de refus (liste noire) testera l'adresse IP d'un serveur de messagerie par rapport à plus de 50 listes noires de messagerie basées sur DNS. (Communément appelé liste noire en temps réel, DNSBL ou RBL).
Score de spam Spamassassin des e-mails Vérifie le score de spam du contenu des e-mails à l'aide de la base de données spamassassin.
Notifications de connexion Laravel Une notification d'événement de connexion pour les projets Laravel. Par défaut, il enverra une notification uniquement sur l'environnement de production.
Laravel Toastr Implémente toastr.js pour Laravel. Toastr.js est une bibliothèque Javascript pour les notifications non bloquantes.
Beast Beast est une capture d'écran en tant que service utilisant Nodejs, Chrome et AWS Lamda. Convertir une page Web en image à l'aide de Chrome sans tête Prend une capture d'écran de tout contenu URL/Html donné et renvoie un tampon codé en base64.
Recommandations de produits de commerce électronique Analysez l'historique des commandes des clients et recommandez des produits aux nouveaux clients, ce qui permet un volume de ventes plus élevé.
Veuillez consulter notre politique de sécurité pour savoir comment signaler les vulnérabilités de sécurité.
Si vous repérez un bug ou avez une question ou une demande de fonctionnalité, veuillez soumettre un problème détaillé et attendre de l'aide.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.