• Время чтения ~1 мин
  • 08.09.2022

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 and finally
  • 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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297