NAME

    Job::Async - IO::Async abstraction for dispatching tasks to workers and
    receiving results

DESCRIPTION

    More API details are in the respective base classes:

      * Job::Async::Client - queues jobs for workers to process

      * Job::Async::Worker - handles the job processing part

    Normally, clients and workers would be in separate processes, probably
    distributed across multiple servers.

 worker

    Attaches a Job::Async::Worker instance as a child of this manager
    object, and returns the new worker instance.

    Takes two parameters:

      * $type - used to select the worker class, e.g. memory or redis

      * $cfg - the configuration parameters to pass to the new worker, as a
      hashref

    Example:

     my $worker = $jobman->worker(
      redis => { uri => 'redis://server', mode => 'reliable' }
     );
     $worker->start;
     $worker->jobs->each(sub { $_->done($_->data('x') . $_->data('y')) });
     $worker->trigger;

 client

    Attaches a Job::Async::Client instance as a child of this manager
    object, and returns the new client instance.

    Takes two parameters:

      * $type - used to select the worker class, e.g. memory or redis

      * $cfg - the configuration parameters to pass to the new worker, as a
      hashref

    Example:

     print "Job result was " . $jobman->client(
      redis => { uri => 'redis://server', mode => 'reliable' }
     )->submit(
      x => 123,
      y => 456
     )->get;

SEE ALSO

    The main feature missing from the other alternatives is job completion
    notification - seems that "fire and forget" is a popular model.

      * Gearman - venerable contender for background job handling, usually
      database-backed

      * TheScwhartz - reliable job queuing, database-backed again

      * Minion - integrates with Mojolicious, normally seems to be used
      with a PostgreSQL backend. Has some useful routing and admin
      features. Does have some support for notification - see
      Minion::Notifier for example - but at the time of writing this came
      with significant overhead.

      * Mojo::Redis::Processor - a curious hybrid of Mojo::Redis2 and
      RedisDB, using pub/sub and a race on SETNX calls to handle multiple
      instances possibly trying to queue the same job at once.

      * Redis::JobQueue

      * Qless

      * Queue::Q

      * Vayne

      * Resque

      * Disque

      * Sque

AUTHOR

    Tom Molesworth <TEAM@cpan.org>

LICENSE

    Copyright Tom Molesworth 2015-2017. Licensed under the same terms as
    Perl itself.

