使用 Symfony Serializer YAML 映射的 Messenger 传输

问题描述

我目前正在使用 Symfony Serializer,通过使用包实现的认注入服务。我可以配置这个序列化器来从特定目录加载 YAML 映射,一切都很好。

现在我还想使用 Symfony Serializer 将消息编码到 Messenger Transport。我在传输配置中启用了 symfony 序列化器,但它不包括为序列化器配置的映射。

async: 
   dsn: 'doctrine://default'
   serializer: messenger.transport.symfony_serializer

我知道可以在 messenger 配置中设置一些 symfony 序列化器特定的配置,但我不知道映射是否可以通过这种方式指定,我尝试了这个,但没有用:

serializer:
            symfony_serializer:
                format: json
                context: 
                    groups: 'list'
                    mapping:
                        paths: ['%kernel.project_dir%/views']

我还尝试实现我自己的传输序列化器,继承自 Symfony\Component\Messenger\Transport\Serialization\Serializer,注入认的 Symfony Serializer (SerializerInterface) 并通过将序列化器实例传递给父构造器来替换序列化器实例。还是不行。

namespace App\Framework\Messenger;

use Symfony\Component\Messenger\Transport\Serialization\Serializer;
use Symfony\Component\Serializer\SerializerInterface;

final class JSONMessageSerializer extends Serializer
{
    public function __construct(SerializerInterface $serializer)
    {
        parent::__construct($serializer,'json',[]);
    }
}

最后但并非最不重要的一点是,我尝试实现我自己的传输序列化器,然后构建我的序列化器组件,添加所有规范化器和我需要的一切。但我似乎找不到加载整个 yaml 文件目录的方法,因为 ClassMetadataFactory 的构造函数采用 YamlFileLoader,它似乎只能处理单个文件

$loader = new YamlFileLoader('/path/to/your/deFinition.yaml')
$classMetadataFactory = new ClassMetadataFactory();

所以我完全没有新的想法,有人可以透露一些信息吗?文档似乎很少,因为认是使用 PHP 序列化器进行传输,但我真的很想使用 JSON,以便将来其他微服务甚至其他技术堆栈可以使用消息。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...