Я пытаюсь использовать push-очередь 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
Теперь, когда я получил сообщение, я хочу сделать одну из двух вещей:
- Обрабатывать сообщение и возвращать ответ на серверы ironmq о том, что все прошло успешно.
- Задержите процесс (отправив 4xx/5xx?) и повторно отправив его через определенный период времени.
Но... как вы отвечаете на push-сообщение? Использование метода deleteMessage PHP SDK вызывает исключение, поскольку сообщение больше не существует.