O Laravel SQS Queue Reader é uma extensão poderosa projetada para integrar webhooks externos perfeitamente em seu aplicativo Laravel. Ao aproveitar a confiabilidade e a escalabilidade do Amazon Simple Queue Service (SQS), essa extensão garante que seu aplicativo processe com eficiência os webhooks recebidos, minimizando o tempo de inatividade e melhorando o desempenho geral.
Integre facilmente webhooks externos em seu aplicativo Laravel sem comprometer o desempenho.
Aproveite o poder do Amazon SQS para enfileirar webhooks recebidos, permitindo processamento assíncrono e paralelo, garantindo tempos de resposta ideais.
O SQS fornece uma infraestrutura robusta e escalável, garantindo que seu aplicativo possa lidar com diversas cargas de webhook sem comprometer a estabilidade.
Projetado como uma extensão do Laravel, o Webhook Queue Reader integra-se perfeitamente ao seu projeto Laravel, seguindo os padrões e convenções de codificação do Laravel.
Personalize as configurações da extensão para alinhá-las aos requisitos do seu aplicativo, incluindo nomes de filas, tempo limite de visibilidade e outras configurações específicas do SQS.
Obtenha insights sobre o fluxo de processamento do webhook com registro detalhado, ajudando a solucionar problemas e monitorar o sistema de maneira eficaz.
Registre webhooks externos com seu aplicativo Laravel fornecendo a URL do webhook.
Os webhooks recebidos são processados com eficiência por meio da fila SQS, garantindo o manuseio ideal das cargas úteis do webhook.
Aproveite os recursos de processamento assíncrono do SQS para lidar com webhooks em segundo plano, evitando qualquer impacto nos tempos de resposta do seu aplicativo.
Aproveite as novas tentativas automáticas do SQS, garantindo que as tentativas malsucedidas de processamento de webhook sejam repetidas sem intervenção manual.
Leitor de fila SQS personalizado para projetos Laravel que suporta cargas JSON brutas e lê várias mensagens. O Laravel espera que as mensagens SQS sejam geradas em um formato específico que inclua a classe manipuladora de trabalhos e um trabalho serializado.
Nota: Implementado para ler múltiplas mensagens da fila.
Esta biblioteca é muito útil quando você deseja analisar mensagens de aplicativos de terceiros, como stripe webhooks, shopify webhooks, mailgun web hooks, mensagens JSON personalizadas e assim por diante.
Instale o leitor de fila SQS personalizado para Laravel via compositor:
composer require palpalani/laravel-sqs-queue-json-reader
Você pode publicar o arquivo de configuração e definir suas configurações SQS no arquivo de configuração do Laravel.
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
Este é o conteúdo do arquivo de configuração 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 ,
]
];
Se a fila não for encontrada na matriz 'handlers', a carga útil do SQS será passada para o manipulador padrão.
Registre seus webhooks com sua aplicação Laravel.
Adicione a conexão sqs-json
ao seu config/queue.php, exemplo:
[
// 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 ' ),
],
]
No arquivo .env, escolha sqs-json como seu novo driver de fila padrão:
QUEUE_DRIVER=sqs-json
Aproveite o processamento de webhook contínuo, confiável e escalonável!
Se você planeja enviar mensagens simples do Laravel, você pode confiar no 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 ());
}
}
O código acima enviará o seguinte objeto JSON para a fila SQS:
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
O campo 'job' não é usado, na verdade. É mantido apenas para compatibilidade com o Laravel Framework.
Execute o seguinte comando para testar o trabalho despachado.
php artisan queue:work sqs-json
Para production
, use supervisor com a configuração a seguir.
[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
Se você estiver usando conexões múltiplas, duplique a configuração do supervisor acima e altere o nome da conexão.
Se um aplicativo de terceiros ou API Gateway para implementação de SQS estiver criando mensagens JSON em formato personalizado, basta adicionar um manipulador no arquivo de configuração e implementar uma classe de manipulador da seguinte maneira:
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 ());
}
}
Observação:
Certifique-se de que seu aplicativo Laravel esteja configurado com as credenciais e permissões necessárias da AWS para interagir com o SQS.
Aprimore os recursos de processamento de webhook do seu aplicativo Laravel com o Laravel Webhook Queue Reader. Eficiente, confiável e projetado para desempenho ideal!
Para obter mais informações sobre o AWS SQS, verifique os documentos oficiais.
Já configuramos o script, basta executar o comando:
composer test
Para formato de cobertura de teste, execute o comando:
composer test-coverage
Para análise de código, execute o comando:
composer analyse
Para formato de código, execute o comando:
composer format
Consulte CHANGELOG para obter mais informações sobre o que mudou recentemente.
Consulte CONTRIBUINDO para obter detalhes.
Se você quiser contribuir, então você pode querer testá-lo em um projeto real do Laravel:
/laravel-sqs-queue-json-reader
, crie uma ramificação para sua correção, por exemplo, feature/awesome-feature
. Instale os pacotes no composer.json
do seu aplicativo:
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
Agora, execute composer update
.
Tarefa de reitor do GrumPHP GrumPHP com uma tarefa que executa o RectorPHP para seus projetos Laravel.
Verificação de lista de negação de e-mail (lista negra) - Lista de negação de IP (lista negra) O verificador de lista de negação de verificação (lista negra) testará um endereço IP de servidor de e-mail em mais de 50 listas negras de e-mail baseadas em DNS. (Comumente chamada de lista negra em tempo real, DNSBL ou RBL).
Pontuação de spam de e-mails do Spamassassin Verifica a pontuação de spam do conteúdo do e-mail usando o banco de dados spamassassin.
Notificações de login do Laravel Uma notificação de evento de login para projetos Laravel. Por padrão, ele enviará notificações apenas no ambiente de produção.
Laravel Toastr Implementa brinde.js para Laravel. Toastr.js é uma biblioteca Javascript para notificações sem bloqueio.
Beast Beast é uma captura de tela como serviço usando Nodejs, Chrome e Aws Lamda. Converter uma página da web em uma imagem usando o Chrome sem cabeça Faz captura de tela de qualquer conteúdo URL/Html e retorna buffer codificado em base64.
Recomendações de produtos de comércio eletrônico Analise o histórico de pedidos de clientes e recomende produtos para novos clientes, o que permite maior volume de vendas.
Revise nossa política de segurança sobre como relatar vulnerabilidades de segurança.
Se você detectar um bug ou tiver uma dúvida ou solicitação de recurso, envie um problema detalhado e aguarde assistência.
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.