Laravel Haystack — это пакет для очень простых, но мощных цепочек заданий на основе базы данных. Вот обзор того, что доступно, взято из readme пакета:
$haystack = Haystack::build()
->withName('Podcast Chain')
->addJob(new RecordPodcast)
->addJob(new ProcessPodcast)
->addJob(new PublishPodcast)
->then(function () {
// Haystack completed
})
->catch(function () {
// Haystack failed
})
->finally(function () {
// Always run either on success or fail.
})
->paused(function () {
// Run if the haystack is paused
})
->withMiddleware([
// Middleware to apply on every job
])
->withDelay(60) // Add a delay to every job
->dispatch();
С помощью этого пакета вы сохраняете цепочки заданий в базе данных, что помогает снизить потребление памяти и поддерживает все типы очередей Laravel из коробки. Некоторые из других основных функций включают в себя:
- Low memory consumption as one job is processed at a time and the chain is stored in the database
- You can delay/release jobs for as long as you want since it will use the scheduler to restart a chain. Even if your queue driver is SQS!
- It provides callback methods like
then
,catch
andfinally
- Global middleware that can be applied to every single job in the chain
- Delay that can be added to every job in the chain
- You can store and retrieve data/state that is accessible to every job in the chain.
- You can store the model for later processing.
Вы можете делать довольно интересные вещи, например, приостанавливать стога сена, если ваша цепочка заданий вызывает API и достигает ограничений скорости. Хотя в Laravel есть цепочки заданий, я думаю, вам следует рассмотреть этот пакет для пакетных заданий. Подробную информацию о том, чем этот пакет отличается от встроенных возможностей цепочки, см. в файле readme.
Вы можете узнать больше об этом пакете, получить полные инструкции по установке, и просмотрите исходный код на GitHub.