goavega-software / laravel-azure-servicebus
扩展 Laravel 队列以支持 Microsoft Azure Service Bus 队列和主题。
Requires
- php: >=7.1.10
- illuminate/container: >=7.0.0 <8.0.0
- illuminate/encryption: >=7.0.0 <8.0.0
- illuminate/queue: >=7.0.0 <8.0.0
- illuminate/support: >=7.0.0 <8.0.0
- microsoft/windowsazure: 0.5.7
README
概述
该库支持服务总线队列和基于主题的消息传递(主题尚未测试,但应该可以工作)。默认为服务总线队列,对于基于主题的消息传递,应将 UseTopic 设置为 true。在 Laravel > 5.6 上应该可以自动发现此包。
安装
在您的 composer.json
中需要此包
"goavega-software/laravel-azure-servicebus": "<<version>>"
运行 composer update!
在 composer update 完成 后,您需要在 app/config/app.php
中的 providers
数组中添加 ServiceProvider(这仅适用于 laravel < 5.6)
'Goavega\LaravelAzureServicebusTopic\Support\Serviceprovider',
将以下内容添加到 app/config/queue.php
中的 connection
数组中,并从 Azure 管理门户填写您自己的连接数据
'azureservicebus' => array(
'driver' => 'azureservicebus',
'endpoint' => 'https://*.servicebus.windows.net',
'SharedAccessKeyName' => '',
'SharedAccessKey' => 'primary key',
'queue' => '<topic name>',
'UseTopic' => true/false (default false)
)
使用方法
该库支持服务总线队列和基于主题的消息传递。默认为服务总线队列,对于基于主题的消息传递,应将 UseTopic 设置为 true。配置完成后,您可以使用 Laravel 队列 API。如果您不知道如何使用 Queue API,请参阅官方 Laravel 文档。
从 Laravel 队列文档中,以下内容应该可以工作
$payload = new \stdClass(); $payload->id = 1; $payload->name = 'hello world'; ProcessPodcast::dispatch($payload)->onConnection('azureservicebus')->onQueue('queue-name');
artisan worker 应按照 Laravel 官方文档启动
php artisan queue:listen azureservicebus --queue=queue-name
Azure 主题支持
目前尚不支持在 Azure 主题上自动创建订阅。而是使用已知的订阅标识符,该标识符需要在服务总线上手动创建。该标识符是 6c7dd8f3e3e145a5b9782b41d741c951
版本兼容性
该包使用语义版本控制,并尝试匹配 Laravel 版本。
- 如果您使用 Laravel 5.5,请使用版本 2.x
- 如果您使用 Laravel 5.6-5.8,请使用版本 5.x
- 如果您使用 Laravel 6.x,请使用版本 6.x
- 如果您使用 Laravel 7.x,请使用版本 7.x
- 如果您使用 Laravel 8.x,请使用 dev-master(请参阅下面的兼容性说明)
Laravel 8x 支持
[警告] 此包依赖于已废弃的 Windows-Azure SDK for PHP,已有两年未更新。这导致了不兼容的依赖项(特别是与 GuzzleHttp 相关 - 请参阅 #2)。我们已决定分支 windows-azure 包,仅保留服务总线的一部分。由于分支尚未发布(仍有几个单元测试失败,需要验证它们是由于无效的测试用例还是由于功能损坏),将此包包含在 Laravel 8.x 中的唯一方法是使用 dev-master composer.json
"repositories": [{ "type": "git", "url": "https://github.com/sn123/azure-sdk-for-php.git" }], "require: { ... "goavega-software/laravel-azure-servicebus": "dev-master" },
其余内容应与旧版的 Laravel 相同。