2013-06-27 44 views
1

我正在嘗試使用iron.mq推送隊列,但我很難弄清楚如何在收到消息後正確響應隊列。我意識到,我可能還不能完全理解排隊系統的行爲,但我的理解是,它是這樣的:使用Iron.mq推送隊列與PHP

  1. 信息發送到隊列
  2. 消息從隊列推到我的終點
  3. 留言直到我的端點響應或超時爲止
  4. 端點以2xx(成功)響應並且它被刪除或4xx/5xx失敗,在這種情況下,隊列將嘗試重新發送消息到端點。

例如,我的腳本(使用FuelPHP)有這樣的事情:

$headers = Input::headers(); //gets array of headers sent from ironmq 
    $data = @file_get_contents('php://input'); //get the body 

現在,我已經收到了消息,我想做的兩兩件事之一:

  1. 處理消息並返回對成功的ironmq服務器的響應
  2. 延遲進程(通過發送4xx/5xx?)並在定義的時間段後重新發送進程。

但是......您如何迴應推送消息?由於消息似乎不再存在,因此使用PHP SDK的deleteMessage方法會導致出現異常。

回答

1

如此 - 兩種方式:

  1. 202 - >做長工作 - >deleteMessagePushStatus()
  2. 4XX或5XX - > 4XX或5XX(多次) - > 200和
+0

感謝。 deleteMessagePushStatus()用於刪除消息。我沒有看到SDK中發送4xx或5xx的方法。有一個嗎? –

+0

@ Anti-Dentite你的端點是如果有問題會返回4xx或5xx的端點。 IronMQ將重新嘗試您在推送隊列上設置的重試次數。如果你的端點返回一個200,那就很好,消息會自動刪除,就像千千萬萬的人說的那樣。或者如果您需要大量時間來處理消息,則可以返回202。 –