软协/laravel-protobuf-events

辅助工具,允许nuwber/rabbitevents与protobuf一起工作

2.1.5 2024-03-25 09:42 UTC

This package is auto-updated.

Last update: 2024-09-02 13:23:59 UTC


README

Latest Version Software License Build Status Total Downloads Average time to resolve an issue Percentage of issues still open

辅助工具,允许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