2

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

在此处输入图像描述

Properties expire: 50000 是我想要设置的。

我怎样才能做到这一点?

4

2 回答 2

5

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

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

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

您可以在此处找到支持的消息属性

例如:

$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 - 字符串

我 - 整数

D - 十进制

T - 时间戳

F - 表

A - 数组

于 2014-12-22T16:39:53.553 回答
0

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

于 2013-01-10T17:56:09.690 回答