yousign/zdd-message-bundle

断言消息符合零停机部署规范

3.0.2 2024-03-20 13:13 UTC

README

一个用于断言与消息代理(如RabbitMQ)一起使用的消息符合零停机部署规范的Symfony Bundle。

入门

安装

您可以通过composer轻松安装Zdd Message bundle

$ composer require yousign/zdd-message-bundle

然后,应该注册bundle。只需确认config\bundles.php包含

Yousign\ZddMessageBundle\ZddMessageBundle::class => ['all' => true],

配置

一旦安装了bundle,您应该创建一个类来配置要断言的消息以及如何创建它们

<?php

namespace App\Message;

use Yousign\ZddMessageBundle\Config\ZddMessageConfigInterface;

class MessageConfig implements ZddMessageConfigInterface
{
    /**
     * Return the list of messages to assert.
     */
    public function getMessageToAssert(): array
    {
        return [
            App\Message\MyMessage::class,
            App\Message\AnotherMessage::class,
            //...
        ];
    }

    /**
     * If your message contains no scalar value as parameter such like value enums, value object more complex object,
     * you should use this method to return value for each type hint.
     */
    public function generateValueForCustomPropertyType(string $type): mixed
    {
        return match ($type) {
            'App\ValueObject\Email' => new App\ValueObject\Email('dummy@email.fr'),
            'App\Enum\MyEnum' => App\Enum\MyEnum::MY_VALUE,
            default => null,
        };
    }
}

当类创建完成后,您可以将其注册为服务。

# config/services.yaml
  App\Message\MessageConfig: ~

然后,您应该在配置中注册它(config/packages/zdd_message.yaml

# config/packages/zdd_message.yaml
  zdd_message:
    serialized_messages_dir: 'var/serialized_messages' # The directory where the serialized messages will be stored (default: '%kernel.logs_dir%')

可选配置

使用自定义序列化器

使用不同序列化器的选项。可能的选项

  • Yousign\ZddMessageBundle\Serializer\ZddMessageMessengerSerializer(默认,已在messenger.yaml中为messenger序列化配置)
  • 定义自己的序列化器
    • 创建一个实现Yousign\ZddMessageBundle\Serializer\SerializerInterface的服务
    • 在配置中使用它
# config/packages/zdd_message.yaml
  zdd_message:
    serializer: '<your-service-id>'

检测未跟踪的消息

如果异步消息(使用symfony messenger)已被发送但不在您的配置中,则写入日志消息的选项。

# config/packages/zdd_message.yaml
zdd_message:
  # ...
  log_untracked_messages:
    messenger:
      enable: true # false by default
      level: 'error' # warning by default

用法

该bundle附带命令,用于断言您的消息符合零停机部署规范

$ bin/console yousign:zdd-message:generate # Generate serialized messages in files.
$ bin/console yousign:zdd-message:validate # Assert that the messages are compliant by deserializing them from files and call the properties.
$ bin/console yousign:zdd-message:debug # Output all tracked messages.

💡您应使用生产版本代码运行bin/console yousign:zdd-message:generate,并使用要合并的版本代码运行bin/console yousign:zdd-message:validate

来自您要合并的版本的示例

$ git checkout [production_version]
$ bin/console yousign:zdd-message:generate
$ git checkout - # Go back to the version you want to merge
$ bin/console yousign:zdd-message:validate

贡献

请阅读CONTRIBUTING.md以了解我们的行为准则以及向我们提交拉取请求的过程。

在编写您的修复/功能后,您可以运行以下命令以确保一切正常。

# Install dev dependencies
$ composer install

# Running tests and quality tools locally
$ make all

如果您想使用您在本地的分支开发项目,您可以使用链接命令用您的本地版本替换vendor安装。

$ ./link /home/yousign/dev/my-project

作者

  • Smaine Milianni - ismail1432 - <smaine(dot)milianni@gmail(dot)com>
  • Simon Mutricy - Inkod - <ink0d@pm(dot)me>