johndev / hermes
一个简单的消息代理包
0.1.6-BETA
2021-07-29 05:05 UTC
Requires
- php: >=7.4
- illuminate/config: ^8.50
- illuminate/console: ^8.50
- php-amqplib/php-amqplib: ^3.0
Requires (Dev)
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-29 05:56:48 UTC
README
Hermes 是对流行的消息代理的一个简单封装
安装
使用 composer 需要此包。
composer require johndev/hermes
此包使用 Laravel 包自动发现,因此不需要您手动添加 ServiceProvider。
没有自动发现可用
如果您不使用 Laravel 自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组。
Hermes\Providers\HermesServiceProvider::class,
如果您想使用 Hermes 门面,请在 config/app.php 中的 facades 数组中添加此内容。
'Hermes' => Hermes\Facades\Hermes::class,
配置文件
要发布 hermes 的配置文件,请在您的项目中执行此命令。
php artisan vendor:publish --provider="JohnDev\Hermes\Providers\HermesServiceProvider"
配置
默认代理
要配置此包使用的默认消息代理,请在您的环境文件中更改此设置。
HERMES_DEFAULT_BROKER="amqp"
AMQP 消息代理配置
用法
发布
发布一条消息
<?php use Hermes\Facades\Hermes; $bindingKey = 'co.johndev.test'; $message = 'Test message'; Hermes::publish($bindingKey, $message);
消费
消费一条消息并结束
<?php use JohnDev\Hermes\Message; use JohnDev\Hermes\Contracts\CarrierContract; Hermes::consume(function(Message $message, CarrierContract $carrier) { dump($message->body()); $message->ack(); $carrier->finish(); });
消费不同队列的消息
<?php use JohnDev\Hermes\Facades\Hermes; use JohnDev\Hermes\Message; use JohnDev\Hermes\Contracts\CarrierContract; Hermes::queue('queue-name')->consume(function(Message $message, CarrierContract $carrier) { dump($message->body()); $message->ack(); $carrier->finish(); });
执行时自定义配置
如果您想在执行时自定义配置,请使用 Hermes 门面中可用的 config() 方法。
<?php use JohnDev\Hermes\Facades\Hermes; use JohnDev\Hermes\Message; use JohnDev\Hermes\Contracts\CarrierContract; $config = [ 'consume' => [ 'tag' => 'custom-tag', 'timeout' => 10, ] ]; Hermes::config($config)->consume(function(Message $message, CarrierContract $carrier) { dump($message->body()); $message->ack(); $carrier->finish(); });