软协 / laravel-protobuf-events
辅助工具,允许nuwber/rabbitevents与protobuf一起工作
Requires
- php: >=8.1
- ext-bcmath: *
- ext-pcntl: *
- ext-protobuf: *
- ext-sockets: *
- google/protobuf: ^3.19
- nuwber/rabbitevents: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.50
- mockery/mockery: ^1.0
- orchestra/testbench: ^8.21
- phpunit/phpunit: ^9.0
- rector/rector: ^0.11.20
- squizlabs/php_codesniffer: ^3
README
辅助工具,允许nuwber/rabbitevents与protobuf一起工作
主要功能
- 允许轻松使用nuwber/rabbit-events发布/监听protobuf消息。
安装
您可以使用composer要求此包的最后一个版本
composer require softonic/laravel-protobuf-events
配置
首先,您需要配置nuwber/rabbit-events包,以便使用此包。
然后,您必须配置config/protobuf-events.php
来设置库的客户端。此客户端允许隔离不同的服务,识别消息的来源。
配置监听器
在RabbitEventsServiceProvider::boot()
中,使用ExternalEvents::decorateListener()
方法注册您想要使用的监听器。
/** * Register any events for your application. */ public function boot(): void { $this->listen = [ 'my.routing.key' => [ ExternalEvents::decorateListener(MyListener::class), ], ]; parent::boot(); }
监听器需要一个名为handle()
的方法,该方法将接收消息和路由键,以及一个名为setClient()
的方法来识别消息的来源。
class MyListener { public function setClient(string $client): void { // ... } public function handle(ProtobufExampleMessage $event): void { // ... } }
发布消息
要发布消息,您需要使用ExternalEvents::publish()
方法。
ExternalEvents::publish( ':service:', (new ProtobufExampleMessage) ->setName('My name') ->setAge(10) );
高级用法
有时您需要以不同于默认的方式使用此包。例如,您可以使用此包从字符串解码消息。在这种情况下,您可以使用ExternalEvents::decode()
方法解码消息。
$message = ExternalEvents::decode( ProtobufExampleMessage::class, '\n My name\n 10\n' // The message is a string with the protobuf message. );
记录protobuf消息
如果您想记录出去的protobuf消息和进入的消息,您可以配置一个用于记录消息的记录器和格式化器。为此,您有ExternalEvents::setLogger()
和ExternalEvents::setFormatter()
方法。记录器必须实现Psr\Log\LoggerInterface
,格式化器必须实现LogMessageFormatterInterface
接口。
ExternalEvents::setLogger(Log:getFacadeRoot()); ExternalEvents::setFormatter(new ProtobufLogMessageFormatter());
格式化器将有两个方法,formatOutgoingMessage()
和formatIncomingMessage()
,分别在消息发送或接收时被调用。两者都应返回一个LogMessage
对象,其中包含要记录的消息和上下文。
可以通过在config/protobuf-events.php
中设置communications_log_level
键来更改日志级别。
测试
softonic/laravel-protobuf-events
有一个PHPUnit测试套件,以及一个使用PHP CS Fixer的编码风格合规性测试套件。
要从项目文件夹运行测试,请运行以下命令。
$ make tests
在开发环境中打开终端
$ make debug
许可证
Apache 2.0许可证。有关更多信息,请参阅LICENSE。