Laravel SQS 큐 리더는 외부 웹후크를 Laravel 애플리케이션에 원활하게 통합하도록 설계된 강력한 확장 기능입니다. 이 확장은 Amazon Simple Queue Service(SQS)의 안정성과 확장성을 활용하여 애플리케이션이 들어오는 웹후크를 효율적으로 처리하도록 보장하여 가동 중지 시간을 최소화하고 전반적인 성능을 향상시킵니다.
성능 저하 없이 외부 웹후크를 Laravel 애플리케이션에 쉽게 통합할 수 있습니다.
Amazon SQS의 강력한 기능을 활용하여 수신 Webhook를 대기열에 추가하여 비동기식 및 병렬 처리를 허용하고 최적의 응답 시간을 보장합니다.
SQS는 강력하고 확장 가능한 인프라를 제공하여 애플리케이션이 안정성을 저하시키지 않고 다양한 웹훅 로드를 처리할 수 있도록 보장합니다.
Laravel 확장으로 설계된 Webhook Queue Reader는 Laravel의 코딩 표준 및 규칙에 따라 Laravel 프로젝트에 원활하게 통합됩니다.
대기열 이름, 표시 제한 시간 및 기타 SQS 관련 구성을 포함하여 애플리케이션의 요구 사항에 맞게 확장 설정을 사용자 정의합니다.
자세한 로깅을 통해 웹훅 처리 흐름에 대한 통찰력을 확보하여 시스템 문제를 효과적으로 해결하고 모니터링하는 데 도움을 줍니다.
웹훅 URL을 제공하여 Laravel 애플리케이션에 외부 웹훅을 등록하세요.
들어오는 웹후크는 SQS 대기열을 통해 효율적으로 처리되므로 웹후크 페이로드를 최적으로 처리할 수 있습니다.
SQS의 비동기 처리 기능을 활용하여 백그라운드에서 웹후크를 처리하여 애플리케이션의 응답 시간에 영향을 주지 않도록 하세요.
SQS의 자동 재시도 기능을 활용하면 실패한 웹훅 처리 시도를 수동 개입 없이 재시도할 수 있습니다.
원시 JSON 페이로드를 지원하고 여러 메시지를 읽는 Laravel 프로젝트용 사용자 정의 SQS 대기열 리더입니다. Laravel은 SQS 메시지가 작업 핸들러 클래스와 직렬화된 작업을 포함하는 특정 형식으로 생성될 것으로 예상합니다.
참고: 대기열에서 여러 메시지를 읽도록 구현되었습니다.
이 라이브러리는 스트라이프 웹훅, shopify 웹훅, 메일건 웹훅, 사용자 정의 JSON 메시지 등과 같은 타사 애플리케이션의 메시지를 구문 분석하려는 경우 매우 유용합니다.
작성기를 통해 Laravel용 사용자 정의 SQS 대기열 리더를 설치합니다.
composer require palpalani/laravel-sqs-queue-json-reader
Laravel 구성 파일에서 구성 파일을 게시하고 SQS 설정을 구성할 수 있습니다.
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 ,
]
];
'handlers' 배열에 대기열이 없으면 SQS 페이로드가 기본 핸들러로 전달됩니다.
Laravel 애플리케이션에 웹훅을 등록하세요.
config/queue.php에 sqs-json
연결을 추가하세요. 예:
[
// 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 }}
'job' 필드는 실제로 사용되지 않습니다. 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
다중 연결을 사용하는 경우 위의 감독자 구성을 복제하고 연결 이름을 변경하십시오.
타사 애플리케이션 또는 SQS 구현에 대한 API 게이트웨이가 사용자 정의 형식 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 애플리케이션이 SQS와 상호 작용하는 데 필요한 AWS 자격 증명 및 권한으로 구성되어 있는지 확인하세요.
Laravel Webhook 대기열 리더를 사용하여 Laravel 애플리케이션의 Webhook 처리 기능을 향상시키세요. 효율적이고 안정적이며 최적의 성능을 위해 설계되었습니다!
AWS SQS에 대한 자세한 내용은 공식 문서를 확인하세요.
우리는 이미 스크립트를 구성했습니다. 다음 명령을 실행하기만 하면 됩니다.
composer test
테스트 적용 범위 형식의 경우 다음 명령을 실행하십시오.
composer test-coverage
코드 분석을 위해 다음 명령을 실행합니다.
composer analyse
코드 형식의 경우 다음 명령을 실행합니다.
composer format
최근 변경된 사항에 대한 자세한 내용은 변경 로그를 참조하세요.
자세한 내용은 CONTRIBUTING을 참조하세요.
기여하고 싶다면 실제 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
실행하세요.
GrumPHP rector 작업 GrumPHP는 Laravel 프로젝트에 대해 RectorPHP를 실행하는 작업을 포함합니다.
이메일 거부 목록(블랙리스트) 확인 - IP 거부 목록(블랙리스트) 거부 목록(블랙리스트) 확인 검사기는 50개가 넘는 DNS 기반 이메일 블랙리스트에 대해 메일 서버 IP 주소를 테스트합니다. (일반적으로 실시간 블랙리스트, DNSBL 또는 RBL이라고 함)
Spamassassin 이메일 스팸 점수 spamassassin 데이터베이스를 사용하여 이메일 내용의 스팸 점수를 확인합니다.
Laravel 로그인 알림 Laravel 프로젝트에 대한 로그인 이벤트 알림입니다. 기본적으로 프로덕션 환경에서만 알림을 보냅니다.
Laravel Toastr은 Laravel용 toastr.js를 구현합니다. Toastr.js는 비차단 알림을 위한 Javascript 라이브러리입니다.
Beast Beast는 Nodejs, Chrome 및 Aws Lamda를 사용하는 서비스로서의 스크린샷입니다. 헤드리스 Chrome을 사용하여 웹페이지를 이미지로 변환합니다. 주어진 URL/Html 콘텐츠의 스크린샷을 찍고 base64로 인코딩된 버퍼를 반환합니다.
전자상거래 상품 추천 고객의 주문 내역을 분석하고, 신규 고객에게 판매량을 높일 수 있는 상품을 추천합니다.
보안 취약점을 보고하는 방법에 대한 보안 정책을 검토하세요.
버그를 발견했거나 질문 또는 기능 요청이 있는 경우 자세한 문제를 제출하고 도움을 기다리십시오.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.