На практике бывают случаи, когда при сбоях выполнения задач, между попытками повторного выполнения, необходимо подождать какое-то время. Например, в процессе выполнения задачи внешняя система была недоступна. Так как количество повторов, как правило, лимитировано, то нет смысла тут же пробовать выполнить задачу еще раз. Внешняя система может стать доступной, например, через минуту. Я уже касался возможности установки временного интервала между попытками обработки сообщений в статье «Повторное выполнение задач в RabbitMQ». Однако, бывают случаи, когда необходимо после каждой неудачной попытки изменять временной интервал перед следующим повтором. В этой статье усложним функционал повторного выполнения задач, добавив возможность установки различного временного интервала между попытками обработки сообщений.
Продолжение...Иногда на практике бывает необходимо расширить сущности, передставляющие таблицы базы данных в коде. Например, PHP-фреймворк Symfony позволяет создавать сущности в так называемых вендорных бандлах. При необходимости в приложении, использующей этот бандл, можно расширить вендорную сущность свойствами, присущими предметной области данного приложения. В статье рассматриваются различные варианты расширения сущностей на примере Doctrine ORM с использованием языка PHP.
Продолжение...Во время выполнения задач, которые приходят подписчику из очереди в виде сообщения, возможны случаи сбоев и ошибок. При этом бывает, что задачу нужно попробовать выполнить некоторое количество раз, прежде чем удалить ее из очереди.
Продолжение...