问题描述
我目前正在使用 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 (将#修改为@)