Laravel SQS Queue Reader es una poderosa extensión diseñada para integrar perfectamente webhooks externos en su aplicación Laravel. Al aprovechar la confiabilidad y escalabilidad de Amazon Simple Queue Service (SQS), esta extensión garantiza que su aplicación procese eficientemente los webhooks entrantes, minimizando el tiempo de inactividad y mejorando el rendimiento general.
Integre fácilmente webhooks externos en su aplicación Laravel sin comprometer el rendimiento.
Aproveche el poder de Amazon SQS para poner en cola los webhooks entrantes, lo que permite el procesamiento asincrónico y paralelo y garantiza tiempos de respuesta óptimos.
SQS proporciona una infraestructura sólida y escalable, lo que garantiza que su aplicación pueda manejar diferentes cargas de webhooks sin comprometer la estabilidad.
Diseñado como una extensión de Laravel, Webhook Queue Reader se integra perfectamente en su proyecto Laravel, siguiendo los estándares y convenciones de codificación de Laravel.
Personalice la configuración de la extensión para alinearla con los requisitos de su aplicación, incluidos los nombres de las colas, el tiempo de espera de visibilidad y otras configuraciones específicas de SQS.
Obtenga información sobre el flujo de procesamiento del webhook con registros detallados, lo que le ayudará a solucionar problemas y monitorear el sistema de manera efectiva.
Registre webhooks externos con su aplicación Laravel proporcionando la URL del webhook.
Los webhooks entrantes se procesan de manera eficiente a través de la cola SQS, lo que garantiza un manejo óptimo de las cargas útiles de los webhooks.
Aproveche las capacidades de procesamiento asincrónico de SQS para manejar webhooks en segundo plano, evitando cualquier impacto en los tiempos de respuesta de su aplicación.
Benefíciese de los reintentos automáticos de SQS, lo que garantiza que los intentos fallidos de procesamiento de webhooks se vuelvan a intentar sin intervención manual.
Lector de cola SQS personalizado para proyectos de Laravel que admite cargas útiles JSON sin formato y lee múltiples mensajes. Laravel espera que los mensajes SQS se generen en un formato específico que incluya una clase de controlador de trabajos y un trabajo serializado.
Nota: Implementado para leer múltiples mensajes de la cola.
Esta biblioteca es muy útil cuando desea analizar mensajes de aplicaciones de terceros, como webhooks stripe, webhooks de shopify, webhooks de mailgun, mensajes JSON personalizados, etc.
Instale el lector de colas SQS personalizado para Laravel a través del compositor:
composer require palpalani/laravel-sqs-queue-json-reader
Puede publicar el archivo de configuración y configurar sus ajustes de SQS en el archivo de configuración de Laravel.
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
Este es el contenido del archivo de configuración publicado:
/**
* 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 cola no se encuentra en la matriz de 'controladores', la carga útil de SQS se pasa al controlador predeterminado.
Registre sus webhooks con su aplicación Laravel.
Agregue la conexión sqs-json
a su config/queue.php, ejemplo:
[
// 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 ' ),
],
]
En su archivo .env, elija sqs-json como su nuevo controlador de cola predeterminado:
QUEUE_DRIVER=sqs-json
¡Disfrute de un procesamiento de webhooks fluido, confiable y escalable!
Si planea enviar mensajes simples desde Laravel, puede confiar en 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 ());
}
}
El código anterior enviará el siguiente objeto JSON a la cola SQS:
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
El campo 'trabajo' no se utiliza, en realidad. Solo se mantiene por compatibilidad con Laravel Framework.
Ejecute el siguiente comando para probar el trabajo enviado.
php artisan queue:work sqs-json
Para production
, utilice supervisor con la siguiente configuración.
[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 está utilizando varias conexiones, duplique la configuración del supervisor anterior y cambie el nombre de la conexión.
Si una aplicación de terceros o una implementación de API Gateway to SQS está creando mensajes JSON con formato personalizado, simplemente agregue un controlador en el archivo de configuración e implemente una clase de controlador de la siguiente manera:
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 ());
}
}
Nota:
Asegúrese de que su aplicación Laravel esté configurada con las credenciales y permisos de AWS necesarios para interactuar con SQS.
Mejore las capacidades de procesamiento de webhooks de su aplicación Laravel con Laravel Webhook Queue Reader. ¡Eficiente, confiable y diseñado para un rendimiento óptimo!
Para obtener más información sobre AWS SQS, consulte los documentos oficiales.
Ya configuramos el script, solo ejecuta el comando:
composer test
Para el formato de cobertura de prueba, ejecute el comando:
composer test-coverage
Para analizar el código, ejecute el comando:
composer analyse
Para el formato del código, ejecute el comando:
composer format
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
Consulte CONTRIBUCIÓN para obtener más detalles.
Si desea contribuir, es posible que desee probarlo en un proyecto real de Laravel:
/laravel-sqs-queue-json-reader
, cree una rama para su solución, por ejemplo, feature/awesome-feature
. Instale los paquetes en composer.json
de su aplicación:
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
Ahora, ejecute composer update
.
Tarea rector de GrumPHP GrumPHP con una tarea que ejecuta RectorPHP para tus proyectos de Laravel.
Verificación de lista de denegación de correo electrónico (lista negra) - Lista de denegación de IP (lista negra) Verificación de lista de denegación de correo electrónico (lista negra) probará la dirección IP de un servidor de correo con más de 50 listas negras de correo electrónico basadas en DNS. (Comúnmente llamada lista negra en tiempo real, DNSBL o RBL).
Puntuación de spam de los correos electrónicos de Spamassassin Comprueba la puntuación de spam de los contenidos de los correos electrónicos utilizando la base de datos de spamassassin.
Notificaciones de inicio de sesión de Laravel Una notificación de evento de inicio de sesión para proyectos de Laravel. De forma predeterminada, enviará notificaciones solo en el entorno de producción.
Laravel Toastr Implementa tostador.js para Laravel. Toastr.js es una biblioteca de Javascript para notificaciones sin bloqueo.
Beast Beast es una captura de pantalla como servicio que utiliza Nodejs, Chrome y Aws Lamda. Convierta una página web en una imagen usando Chrome sin cabeza. Toma una captura de pantalla de cualquier contenido URL/Html determinado y devuelve un búfer codificado en base64.
Recomendaciones de productos de comercio electrónico Analice el historial de pedidos de los clientes y recomiende productos para nuevos clientes, lo que permite un mayor volumen de ventas.
Revise nuestra política de seguridad sobre cómo informar vulnerabilidades de seguridad.
Si detecta un error o tiene una pregunta o solicitud de función, envíe un problema detallado y espere ayuda.
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.