【问题标题】:rabbitmq set message Properties phprabbitmq 设置消息属性 php
【发布时间】:2026-01-12 22:40:01
【问题描述】:

我正在尝试在 Symfony 中使用 RabbitMQ Bundle 设置消息属性,但我不知道在哪里/如何做到这一点。这是我在 RabbitMQ Admin UI 中的操作方式

属性过期:50000 是我想要设置的。

我该怎么做?

【问题讨论】:

    标签: php symfony rabbitmq amqp


    【解决方案1】:

    自 2014 年 1 月 8 日起,您使用 RabbitMQ Bundle 设置消息属性,您可以查看提交 here

    现在,当您发布消息时,您可以设置数组 $additionalProperties

    public function publish($msgBody, $routingKey = '', $additionalProperties = array())
    

    您可以找到支持的消息属性here

    例如:

    $msg = ['arg1' => 'val1'];
    $queue->setContentType('application/json');
    $queue->publish(
            json_encode($msg),
            "",
            ['expiration' => '50000']
    );
    

    如果您想为自定义标头使用“标头”,则要复杂一些,因为您必须为每个值定义数据类型。发送,例如$headers['arg1'] = "val1" 就像一个字符串,你必须这样做:

    $msg = ['arg1' => 'val1'];
    $queue->setContentType('application/json');
    $queue->publish(
            json_encode($msg),
            "",
            ["application_headers" => ["arg1" => ["S", "val1"]]]
    );
    

    有效的数据类型是:

    S - 字符串

    I - 整数

    D - 十进制

    T - 时间戳

    F - 表格

    A - 数组

    【讨论】:

      【解决方案2】:

      目前这是不可行的。如果使用bundle依赖的底层php-amqplib库,可以设置消息属性

      【讨论】: