=encoding utf8 =head1 NAME MangoX::Queue::Tutorial =head1 QUICK START =head2 Non-blocking mode using L<Mojo::IOLoop> =over 2 =item 1 Get a L<Mango> collection my $mango = Mango->new('mongodb://localhost:27017'); my $collection = $mango->db('foo')->collection('bar'); =item 2 Create a L<MangoX::Queue> my $queue = MangoX::Queue->new(collection => $collection); =item 3 Add a job to the queue enqueue $queue 'job_name' => sub { my ($job_id) = @_; # ... } =item 4 Consume the queue to receive jobs my $consumer = consume $queue sub { my ($job) = @_; # ... }; =item 5 Stop consuming the queue release $queue $consumer; =item 6 Update the job status in the queue $job->{status} = 'Finished'; update $queue $job => sub { my ($job) = @_; # ... }; =item 7 Remove the job from the queue dequeue $queue $job => sub { # ... }; =back =head2 Blocking mode =over 2 =item 1 Get a L<Mango> collection my $mango = Mango->new('mongodb://localhost:27017'); my $collection = $mango->db('foo')->collection('bar'); =item 2 Create a L<MangoX::Queue> my $queue = MangoX::Queue->new(collection => $collection); =item 3 Add a job to the queue my $job_id = enqueue $queue 'job_name'; =item 4 Consume the queue to receive jobs while (my $job = consume $queue) { # ... }; =item 5 Update the job status in the queue $job->{status} = 'Finished'; my $job = update $queue $job; =item 6 Remove the job from the queue dequeue $queue $job; =back