сообщенями через YMQ.
Одна функция пишет в очередь, вторая запускается по триггеру из очереди.
Чтобы обеспечить гарантированное чтение в случае отказа функции которая читает из очереди по триггеру.
Я создал две FIFO очереди, в первую я записываю сообщения, и в случае проблем с чтением отправляю во вторую очередь.
Во второй очереди сделал так же, в случае не прочтения отправляю в первую очередь.
И добавил два триггера на чтение сообщений на каждую из очередей.
Правильно ли я делаю, чтобы обечпечить 100% чтение сообщений в случае отказа функции которая читает?
Ну ты сообщение или почитал или нет. Если не почитал, то оно осталось в очереди
Не до конца понимаю. Если триггер сработал, и фунция отработала без ошибок = прочитал сообщение Если триггер сработал и фунция упала = не прочтал сообщение, и произойдет повторная попытка. Правильно?
Хороший вопрос. Я думаю облако помечает месседж как доставленный как только функция была успешно вызвана (но не факт что завершились успешно), иначе это неправильно и нелогично. Но лучше убедиться в доке триггеров, в какой момент облако помечает месседж доставленным
Сообщение полученное из очереди на заданное время помечается что оно находится в обработке. Если в течение этого таймаута сообщение не будет обработано и удалено, оно снова станет доступно для чтения. Триггер делает это все за вас. Он вычитывает сообщение и если функция-обработчик не выбросит исключения, то по окончании выполнения фции триггер удалит сообщение из очереди. YMQ реализует API Amazon SQS. Вы можете обратиться к туториралам про SQS, чтобы подробнее разобраться с тем как оно работает.
Кмк, fifo лучше не использовать в таком сценарии, а триггер вешать именно на ymq
Обсуждают сегодня