iron.mq プッシュ キューを使用しようとしていますが、メッセージを受信した後にキューに適切に応答する方法がわかりません。キュー システムの動作も完全には理解していない可能性があることは承知していますが、私の理解では、次のようなものです。
- キューに送信されたメッセージ
- キューからエンドポイントにプッシュされたメッセージ
- エンドポイントが応答するかタイムアウトするまで、メッセージは「予約」されます
- エンドポイントは、2xx (成功) で応答して削除されるか、4xx/5xx 失敗で応答します。この場合、キューはメッセージをエンドポイントに再送信しようとします。
たとえば、私のスクリプト (FuelPHP を使用) には次のようなものがあります。
$headers = Input::headers(); //gets array of headers sent from ironmq
$data = @file_get_contents('php://input'); //get the body
メッセージを受け取ったので、次の 2 つのいずれかを行います。
- メッセージを処理し、正常に処理されたことを示す応答を ironmq サーバーに返す
- (4xx/5xx? を送信して) プロセスを遅らせ、定義された期間後に再送信します。
しかし... プッシュ メッセージにどのように応答しますか? PHP SDK の deleteMessage メソッドを使用すると、メッセージが存在しないように見えるため、例外が発生します。