2011-07-30 33 views
1

The docs說:設置傳送模式。AMQP(RabbitMQ的)

public bool AMQPExchange::publish (string $message , string $routing_key [, int $params = 0 [, array $attributes ]]) 

所以我有這個

$this->exchange->publish(serialize($queue_message), $routing_key,AMQP_MANDATORY,array('delivery_mode' => '2')); 

我試圖讓交流繼續嘗試傳遞消息?

+1

你的問題是什麼? –

+0

我正在嘗試設置傳送模式:但我似乎無法正確地進行傳送? '$ this-> exchange-> publish(serialize($ queue_message),$ routing_key,AMQP_MANDATORY,array('delivery_mode'=>'2'));' – jacob72

+0

你應該也發佈你的錯誤。 –

回答

1

你不能告訴交換所不斷嘗試傳達你的信息。

通常情況下,消息的接收者將自動確認消息,或者在成功處理消息後確認消息。我建議這兩個選擇中的第二個。如果消息沒有被確認,那麼它將被重新排隊,並且如果隊列中有多個用戶,那麼不同的用戶可能會處理它。

我的經驗是所有話題的交流(在這裏您將具有訂閱相同routing_key多個隊列實施扇出。我總是用delivery_mode 2和聲明爲持久的隊列。

如果隊列不存在然後他們會悄然消失

我懷疑你的問題是字符串'2'你有沒有嘗試過使用2這個號碼呢?在數組中指定一個content_type也是一個好主意那會讓它變得

$this->exchange->publish(serialize($queue_message), 
      $routing_key,AMQP_MANDATORY,array('delivery_mode' => 2, 
               'content_type' => 'text/json')); 
+0

Okey謝謝:) 但是如何設置delivery_mode = 2 php文檔不太清楚I.e實際的代碼 – koos