用途:面向 OroCommerce v6.1 的集成开发,涵盖异步消息队列、导入/导出流水线与 Cron 定时任务三类集成场景。
消息队列:用于将重负载工作移出 HTTP 请求周期。生产者向 topic 发送消息,消费者异步处理。
处理器模式:处理器需实现 MessageProcessorInterface 与 TopicSubscriberInterface,process() 必须返回 self::ACK(成功)、self::REJECT(丢弃)或 self::REQUEUE(重试),不能返回 void 或 null。通过 oro.message_queue.client.message_processor 标签注册服务。
导入/导出:采用 Reader -> Processor -> Writer 流水线,每个处理器一次处理一条数据。导出路径为 Entity -> Serializer normalizes -> DataConverter -> flat array(CSV 行);导入路径为 flat array(CSV 行)-> DataConverter -> Serializer denormalizes -> Strategy -> Entity。多数自定义需求只需 DataConverter 与服务配置,无需自定义处理器类;可使用 oro_importexport.processor.export_abstract / oro_importexport.processor.import_abstract 作为父服务。导入处理器需同时带 import 与 import_validation 标签,标签属性为 type、entity(FQCN)、alias(唯一标识)。
Cron 任务:创建实现 CronCommandInterface 的命令,提供 getDefaultDefinition() 返回标准 Linux cron 表达式(分钟 小时 日 月 星期),并通过 isActive() 控制启用。
关键陷阱:处理器返回值缺失会导致消息无限循环;DBAL 传输每秒轮询,生产负载建议使用 AMQP(RabbitMQ);消息体为 JSON 字符串,接收时 json_decode(),发送前 json_encode()。
版本与配置:版本细节见 v6.1 说明,MQ 配置选项见 message-queue-config.md;集成通道、传输、Webhook 与常用命令见 integration-patterns.md。