win-local-inc / message-bus
A package for message bus.
Installs: 4 666
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
- aws/aws-sdk-php-laravel: ^3.6
- laravel/framework: ^v8.0.0|^v9.0.0|^v10.0.0|^v11.0.0
Requires (Dev)
- laravel/pint: ^1.6
- nunomaduro/collision: ^7.4
- orchestra/testbench: ^8.3
README
- All honor go to joblocal/laravel-sqs-sns-subscription-queue
Installation
-
PHP 8.1 is required
-
remove
sqs-sns
fromconfig/queue.php
, it will be added by provider, or update it with
'sqs-sns' => [ 'driver' => 'sqs-sns', 'key' => env('AWS_SQS_ACCESS_KEY_ID'), 'secret' => env('AWS_SQS_SECRET_ACCESS_KEY'), 'queue' => env('AWS_SQS_QUEUE', 'your-queue-url'), 'region' => env('AWS_SQS_REGION', 'us-east-2'), 'topic' => env('AWS_SNS_TOPIC'), 'routes' => [ env('AWS_SNS_TOPIC') => 'WinLocal\\MessageBus\\Jobs\\SqsGetJob', ], 'version' => 'latest', 'ua_append' => [ 'L5MOD/'.\Aws\Laravel\AwsServiceProvider::VERSION, ], ],
- add envs :
AWS_SQS_HANDLER_PATHS= app paths to handlers separeted by "," resolved by App::path($path) AWS_SQS_VALIDATOR_PATHS= app paths to validators separeted by "," resolved by App::path($path) AWS_SQS_ACCESS_KEY_ID= AWS_SQS_SECRET_ACCESS_KEY= AWS_SQS_REGION=us-east-2 AWS_SQS_QUEUE= AWS_SNS_TOPIC=
- handlers:
There are two ways to implement handlers
- Standard
Laravel Job
see -> WinLocal\MessageBus\Tests\Data\Handlers\AdvertCreated.php - Interface
WinLocal\MessageBus\Contracts\ExecutorInterface
see -> WinLocal\MessageBus\Tests\Data\Handlers\AudienceCreated.php
Attribute WinLocal\MessageBus\Attributes\HandleSubjects needs to be used, so resolver will use it.
- validators:
There is optional validator available, that will be excecuted before handlers. Validator needs to extend WinLocal\MessageBus\Contracts\AbstractExecutorValidator see -> WinLocal\MessageBus\Tests\Data\Validators\AudienceCreated.php
- push notification:
WinLocal\MessageBus\Jobs\SnsSendJob::dispatch(\WinLocal\MessageBus\Enums\Subject $subject, array $message);
- each service needs to run supervisor
php artisan queue:work sqs-sns --max-jobs=100 --tries=3 --max-time=3600
- to run tests on package
vendor/bin/testbench package:test --configuration=tests/phpunit.xml