【问题标题】:RabbitMQ PHP AMQP Library - Get message headersRabbitMQ PHP AMQP 库 - 获取消息头
【发布时间】:2014-07-24 14:30:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: php header amqp php-amqplib


    【解决方案1】:

    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');
    

    【讨论】:

    • 我确实试过了,但是application_headers 是空的:/ 你知道为什么会这样吗?我没有做一些填充application_headers的事情吗?
    • application_headers 由库内部填充。如果它为空(空数组)就可以了,这意味着没有为消息设置标题。
    • 对,在这种情况下,我似乎需要对我的队列和交换进行一些更改。非常感谢@zaq178miami!
    【解决方案2】:

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

    /** @var AMQPMessage $message */
    $props = $message->get_properties();
    /** @var AMQPTable $applicationHeaders */
    $applicationHeaders = $props['application_headers'];
    $xdeath = $applicationHeaders->getNativeData()['x-death'];
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 2018-07-24
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多