yousign / zdd-message-bundle
断言消息符合零停机部署规范
3.0.2
2024-03-20 13:13 UTC
Requires
- php: ^8.1.0
- symfony/console: ^6.2|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.1
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.5
- symfony/browser-kit: ^6.2|^7.0
- symfony/framework-bundle: ^6.2|^7.0
- symfony/messenger: ^6.2|^7.0
- symfony/yaml: ^6.2|^7.0
- dev-main
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.0
- 1.1.0
- 1.0.1
- 1.0.0
- 1.0.0-alpha.1
- 1.0.0-alpha
- dev-symfony_7x_support
- dev-recursive-message-validation
- dev-simplify-services-config
- dev-fix-messenger-serializer
- dev-update-readme
- dev-release-2.0.0
- dev-error-when-property-deleted
- dev-update-log-error
- dev-fix-naming-conflict
- dev-release-1.1.0
- dev-add-info-log
This package is auto-updated.
Last update: 2024-09-20 17:41:21 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>