sirsova/laravel-webhooks

为 Laravel 实现队列 Webhook 的实现

v1.0 2019-07-17 09:42 UTC

This package is auto-updated.

Last update: 2024-09-17 21:41:15 UTC


README

本包实现了使用 Laravel 队列发送 Webhook 的标准逻辑,并允许您为每个 Webhook 创建事件订阅者以延迟发送

Latest Version on Packagist Build Status Software License StyleCI Scrutinizer Code Quality

内容

安装

通过 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 容器中覆盖对WebhookChannelMessageProcessor的绑定来轻松地操作自写的解决方案。

测试

$ composer test

变更日志

请参阅变更日志以获取更多最近更改的信息。

许可证

MIT 许可证(MIT)。请参阅许可证文件以获取更多信息。