From 4261c3143b9ef7ce569d132f9f53af65c4080a79 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 17 Feb 2021 10:52:57 +0100 Subject: [PATCH] Bug 27344: Add --job-type to background_jobs_worker.pl This will let sysop adjust the number of workers and how they want to manage them. For instance one could want to have one worker for ES indexation and another worker for other jobs, to prevent ES index to be stuck behind bigger batch process. --- misc/background_jobs_worker.pl | 52 +++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/misc/background_jobs_worker.pl b/misc/background_jobs_worker.pl index 681eed04c0..2bf7318939 100755 --- a/misc/background_jobs_worker.pl +++ b/misc/background_jobs_worker.pl @@ -15,12 +15,53 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . +=head1 NAME + +background_jobs_worker.pl - Worker script that will process backgroung jobs + +=head1 SYNOPSIS + +./background_jobs_worker.pl [--job-type] + +=head1 DESCRIPTION + +This script will connect to the Stomp server (RabbitMQ) and subscribe to the different destination queues available. +You can specify some queues only (using --job-type) if you want to run several workers that will handle their own jobs. + +=head1 OPTIONS + +=over + +=item B<--job-type> + +Give the job types this worker will process. + +The different values available are: + + batch_biblio_record_modification + batch_authority_record_modification + update_elastic_index + +=back + +=cut + use Modern::Perl; use JSON qw( encode_json decode_json ); use Try::Tiny; +use Pod::Usage; +use Getopt::Long; use Koha::BackgroundJobs; +my ( $help, @job_types ); +GetOptions( + 'h|help' => \$help, + 'job-type:s' => \@job_types, +) || pod2usage(1); + +pod2usage(0) if $help; + my $conn; try { $conn = Koha::BackgroundJob->connect; @@ -28,12 +69,21 @@ try { warn sprintf "Cannot connect to the message broker, the jobs will be processed anyway (%s)", $_; }; -my @job_types = qw( +my @available_job_types = qw( batch_biblio_record_modification batch_authority_record_modification update_elastic_index ); +if ( @job_types ) { + for my $job_type ( @job_types ) { + pod2usage( -verbose => 1, -msg => sprintf "You specify an invalid --job-type value: %s\n", $job_type ) + unless grep { $_ eq $job_type } @available_job_types; + } +} else { + @job_types = @available_job_types; +} + if ( $conn ) { # FIXME cf note in Koha::BackgroundJob about $namespace my $namespace = C4::Context->config('memcached_namespace'); -- 2.20.1