To Queue or to Jobqueue in TYPO3 Flow


I am right now upgrading the FLOW3 based setup (to be) used for rendering TYPO3 documentation to run on Flow. This obviously includes replacing the git submodules with composer dependency handling, and during that I (again) came across the confusing situation when it comes to the job queue packages available for Flow. This post will hopefully resolve that confusion as far as possible.

When the implementation of a job queue was started, a generic base package was created that could be combined with implementations for concrete queues (like Redis or Beanstalkd). Those packages started out as TYPO3.Queue, TYPO3.Queue.Redis and TYPO3.Queue.Beanstalkd and are still available on the TYPO3 git server. And some changes for those packages were still in our Gerrit review system–changes that had the purpose to rename those packages to…

TYPO3.Jobqueue.Common, TYPO3.Jobqueue.Redis and TYPO3.Jobqueue.Beanstalkd. So far so good,  but those already existed on the git server as well. And in another project I worked on, those were already used and pulled in via composer.

But none of the six packages mentioned so far were  registered on Packagist, which made me wonder how confusing it would still be getting. I asked Bastian Waidelich about all that, knowing he had worked on those packages in the past, together with Christopher Hlubek, and his help boiled down to why don't you just apply those changes and compare…–which is what I ended up doing. That resulted in three abandoned changes and three new ones.

To make things a bit simpler, I have now added TYPO3.Jobqueue.Common and TYPO3.Jobqueue.Beanstalkd to Packagist, TYPO3.Jobqueue.Redis still needs to be properly "composerified".

TL;DR

  • If you are about to start using job queues in a Flow application, go for the TYPO3.Jobqueue.* packages.
  • If you are using them already, you can/should now fetch them through composer without having to specify their repositories
  • If you are using the TYPO3.Queue family of packages, go ahead  and read the remainder of this  post :)

Switching from TYPO3.Queue to TYPO3.Jobqueue

Obviously you need to adjust a little when switching from TYPO3.Queue to TYPO3.Jobqueue. First of all, replace TYPO3\Queue\Beanstalkd with TYPO3\Jobqueue\Beanstalkd, that solves the majority of what is needed. Follow the same principle when using the Redis implementation.

Now replace the remaining TYPO3\Queue with TYPO3\Jobqueue\Common to adjust uses of the base package. Last but not least  you need to adjust some of the class names, those that were in their packages top level namespace need adjustment (Queue has been added, so …\Beanstalkd\BeanstalkdQueue becomes …\Beanstalkd\Queue\BeanstalkdQueue).

If you are like me, you now forget about the configuration and wonder why it still doesn't work. You can avoid that by adjusting Settings.yaml files as needed, again TYPO3.Queue becomes TYPO3.Jobqueue and the configured queue implementations change.


Comments

  1. Gravatar

    Thanks for this article. Really useful has we start switching some MySQL queue to beanstalk

  2. Gravatar

    This is indeed a great feature PhpStorm has had for a long time. However, I find myself using the External Tools much more often, it has great features:
    * Appears in main-menu/editor/project views/search results, just right-click! This means you have context-aware macros you can use. (Like $FilePath$ and $SelectedText$ even! That's freakin' awesome indeed)
    * Has output-aware regular expression filters!
    * Has many useful macros
    * Can be grouped into sub-menus
    * Can synchronize files after execution
    * Can set working directory

    About Command Line Tool Support , a few questions:
    1) Is there any schema definition somewhere or documentation for the XML definition file?
    2) Please consider renaming Framework in pop-ups to Tool . One might be confused with the Framework Integration feature. And as the name Command Line Tool Support suggests, these are tools, not frameworks. Though this can blown into a whole philosophic debate..

  3. Gravatar

    Thanks, Karsten, very useful article.
    FYI: In the meantime the TYPO3.Queue.* forge projects and git repositories have been archived!

Leave a reply

Karsten Dambekalns

Creative Code Engineer

Contact / Impressum