我有一个简单的排队系统,显然,它会接收消息并发布它们。
但是,由于系统中的新开发,我们现在需要检查交换机中的x-death
标头,但是,我似乎无法找到有关如何通过PHP AMQP库检索它的任何文档
任何人对如何实现这一点都有任何想法?
答案 0 :(得分:6)
在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');
答案 1 :(得分:2)
只是为@ pinepain的答案添加更多内容。您也可以执行以下操作:
/** @var AMQPMessage $message */
$props = $message->get_properties();
/** @var AMQPTable $applicationHeaders */
$applicationHeaders = $props['application_headers'];
$xdeath = $applicationHeaders->getNativeData()['x-death'];