1
我有一個簡單的排隊系統,顯然,它需要消息併發布它們。RabbitMQ PHP AMQP庫 - 獲取郵件標題
但是,由於系統的新發展,我們現在需要檢查交換機上的x-death
頭,但是,我似乎沒有任何關於如何通過PHP AMQP庫檢索的文檔。
任何人有任何想法如何實現這一目標?
我有一個簡單的排隊系統,顯然,它需要消息併發布它們。RabbitMQ PHP AMQP庫 - 獲取郵件標題
但是,由於系統的新發展,我們現在需要檢查交換機上的x-death
頭,但是,我似乎沒有任何關於如何通過PHP AMQP庫檢索的文檔。
任何人有任何想法如何實現這一目標?
在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');
只是一些更增添@ pinepain的答案。您也可以執行以下操作:
/** @var AMQPMessage $message */
$props = $message->get_properties();
/** @var AMQPTable $applicationHeaders */
$applicationHeaders = $props['application_headers'];
$xdeath = $applicationHeaders->getNativeData()['x-death'];
我確實嘗試過,但'application_headers'爲空:/您知道爲什麼會有這種情況嗎?我沒有做一些填充'application_headers'的東西嗎? – DarkMantis
'application_headers'由庫內部填充。如果它爲空(空數組),則表示沒有問題,表示沒有爲該消息設置標題。 – pinepain
對,在這種情況下,我似乎需要對我的隊列和交換進行一些更改。非常感謝@ zaq178miami! – DarkMantis