2014-07-24 60 views
1

我有一個簡單的排隊系統,顯然,它需要消息併發布它們。RabbitMQ PHP AMQP庫 - 獲取郵件標題

但是,由於系統的新發展,我們現在需要檢查交換機上的x-death頭,但是,我似乎沒有任何關於如何通過PHP AMQP庫檢索的文檔。

任何人有任何想法如何實現這一目標?

回答

4

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

我確實嘗試過,但'application_headers'爲空:/您知道爲什麼會有這種情況嗎?我沒有做一些填充'application_headers'的東西嗎? – DarkMantis

+1

'application_headers'由庫內部填充。如果它爲空(空數組),則表示沒有問題,表示沒有爲該消息設置標題。 – pinepain

+0

對,在這種情況下,我似乎需要對我的隊列和交換進行一些更改。非常感謝@ zaq178miami! – DarkMantis

1

只是一些更增添@ pinepain的答案。您也可以執行以下操作:

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