5

我有一个简单的排队系统,很明显,它接收消息并发布它们。

但是,由于系统的新开发,我们现在需要检查x-death交换中的标头,但是,我似乎没有任何有关如何通过 PHP AMQP 库检索该标头的文档。

有人对如何实现这一目标有任何想法吗?

4

2 回答 2

9

application_headers在属性中检查它。

这是示例中的简短修改代码:

/**
 * @param \PhpAmqpLib\Message\AMQPMessage $msg
 */
function process_message($msg)
{
    $headers = $msg->get('application_headers');
    $props = ['x-death'];

    // OR

    $props = $msg->get_properties();
    $props['application_headers']['x-death'];

    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
}


$ch->basic_consume($queue, $consumer_tag, false, false, false, false, 'process_message');
于 2014-07-24T16:18:32.000 回答
9

只是为@pinepain 的答案添加更多内容。您也可以执行以下操作:

/** @var AMQPMessage $message */
$props = $message->get_properties();
/** @var AMQPTable $applicationHeaders */
$applicationHeaders = $props['application_headers'];
$xdeath = $applicationHeaders->getNativeData()['x-death'];
于 2017-07-19T12:21:02.303 回答