sirsova / laravel-webhooks
为 Laravel 实现队列 Webhook 的实现
v1.0
2019-07-17 09:42 UTC
Requires
- php: ^7.1
- ext-json: *
- guzzlehttp/guzzle: ^6.3
- illuminate/bus: ^5.7
- illuminate/queue: ^5.7
- illuminate/support: ^5.7
Requires (Dev)
- orchestra/testbench: ^3.5
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-17 21:41:15 UTC
README
本包实现了使用 Laravel 队列发送 Webhook 的标准逻辑,并允许您为每个 Webhook 创建事件订阅者以延迟发送
内容
安装
通过 composer 安装包
$ composer require sirsova/laravel-webhooks
设置 Webhook 服务
安装后,您需要在 config/app.php
中注册服务提供者
'providers' => [ ... SirSova\Webhooks\ServiceProvider::class, ]
此外,为了使用包配置,您需要执行脚本,将 config/webhooks.php
发布到根配置目录
$ php artisan vendor:publish --tag=webhooks_config
为了将包迁移复制到迁移的根路径
$ php artisan vendor:publish --tag=webhooks-migrations
用法
可用的作业
ProcessMessage
:将消息派发到消息处理器,该处理器通过事件名称将 Webhook 队列到所有订阅者ProcessWebhook
:将 Webhook 派发到 Webhook 通道,该通道在给定的 URL(订阅者 URL)上发送消息
代码示例
use Illuminate\Contracts\Bus\QueueingDispatcher; use SirSova\Webhooks\Jobs\ProcessMessage; use SirSova\Webhooks\Message; ... $busDispatcher = app(QueueingDispatcher::class); $message = new Message('event-type', ['foo' => 'bar']); $job = new ProcessMessage($message); //queued message example $busDispatcher->dispatchToQueue($job->onQueue('webhooks')); //dispatching in time message $busDispatcher->dispatch($job); //queued webhook example $webhook = new Webhook($message, 'https://example.com'); $job = new ProcessWebhook($webhook); $busDispatcher->dispatchToQueue($job->onQueue('webhooks'));
每条消息都将由特定事件的订阅者处理。
MessageProcessor
将为每个订阅者创建一个新的 Webhook 并将它们派发到队列中(参见配置)。
您可以通过在 DI 容器中覆盖对WebhookChannel
和MessageProcessor
的绑定来轻松地操作自写的解决方案。
测试
$ composer test
变更日志
请参阅变更日志以获取更多最近更改的信息。
许可证
MIT 许可证(MIT)。请参阅许可证文件以获取更多信息。