You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Laravel向Symfony创建的RabbitMQ队列发布原始JSON消息

问题原因

Laravel 默认的队列任务调度机制是为自身消费场景设计的,会自动封装任务类信息、重试配置、序列化后的任务参数等元数据,用于后续Laravel队列进程解析执行任务,这就是你收到的消息携带额外字段的原因。

解决方案

你不需要通过自定义Job类的方式发布消息,直接调用队列连接的pushRaw方法发布原始内容即可,代码示例如下:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Queue;

class TestController extends Controller
{
    public function sendMessage()
    {
        // 构造你需要发送的原始数据
        $rawData = [
            'type' => 'logger',
            'content' => 'Some json message'
        ];
        // 直接向rabbitmq连接的test-queue队列发布原始JSON
        Queue::connection('rabbitmq')->pushRaw(
            json_encode($rawData),
            'test-queue'
        );
    }
}

补充:如果需要自定义消息的RabbitMQ专属属性(如持久化标识、消息过期时间、路由键等),可向pushRaw方法传入第三个参数配置对应属性即可。


验证效果

通过该方法发布的消息不会携带任何Laravel队列默认元数据,队列中存储的就是你传入的原始JSON字符串,可直接被Symfony应用正常消费。

内容的提问来源于stack exchange,提问作者Nguyen Nhut Tien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:54:03