From fd75117aa5bcdfdaac08b2054f83a24e7922327c Mon Sep 17 00:00:00 2001 From: Max Harmathy Date: Mon, 17 May 2021 17:06:23 +0200 Subject: [PATCH] Add parameter to set the brokers via a command --- bin/kafka_consumer.pl | 25 +++++++++++++++++-------- bin/kafka_producer.pl | 23 ++++++++++++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/bin/kafka_consumer.pl b/bin/kafka_consumer.pl index fffe7f7..464f525 100644 --- a/bin/kafka_consumer.pl +++ b/bin/kafka_consumer.pl @@ -8,14 +8,15 @@ use Pod::Usage; my $res = GetOptions( - "group-id=s" => \my $group_id, - "topic=s" => \my @topics, - "brokers=s" => \my $brokers, - "ca-cert=s" => \my $cacert, - "username=s" => \my $sasluser, - "password=s" => \my $saslpass, - "debug" => \my $debug, - "help" => \my $help, + "group-id=s" => \my $group_id, + "topic=s" => \my @topics, + "brokers=s" => \my $brokers, + "brokers-command=s" => \my $brokers_command, + "ca-cert=s" => \my $cacert, + "username=s" => \my $sasluser, + "password=s" => \my $saslpass, + "debug" => \my $debug, + "help" => \my $help, ); pod2usage(-verbose => 2, -noperldoc => 1) if $help or not $res; @@ -44,6 +45,10 @@ =head1 OPTIONS comma separated list of brokers. For example: C. +=item B + +a command, which can provide a broker list + =item B path to CA certificate. If not specified then plaintext protocol is used to connect to broker. @@ -62,6 +67,10 @@ =head1 OPTIONS =cut +if ( !defined($brokers) && defined($brokers_command) ) { + $brokers = `$brokers_command`; +} + $group_id //= "test-consumer"; $brokers //= "localhost:9092"; diff --git a/bin/kafka_producer.pl b/bin/kafka_producer.pl index 80282a6..c99100a 100644 --- a/bin/kafka_producer.pl +++ b/bin/kafka_producer.pl @@ -8,13 +8,14 @@ use Pod::Usage; my $gor = GetOptions( - "topic=s" => \my $topic, - "brokers=s" => \my $brokers, - "ca-cert=s" => \my $cacert, - "username=s" => \my $sasluser, - "password=s" => \my $saslpass, - "debug" => \my $debug, - "help" => \my $help, + "topic=s" => \my $topic, + "brokers=s" => \my $brokers, + "brokers-command=s" => \my $brokers_command, + "ca-cert=s" => \my $cacert, + "username=s" => \my $sasluser, + "password=s" => \my $saslpass, + "debug" => \my $debug, + "help" => \my $help, ); pod2usage(-verbose => 2, -noperldoc => 1) if $help or not $gor; @@ -41,6 +42,10 @@ =head1 OPTIONS comma separated list of brokers. For example: C. +=item B + +a command, which can provide a broker list + =item B path to CA certificate. If not specified then plaintext protocol is used to connect to broker. @@ -59,6 +64,10 @@ =head1 OPTIONS =cut +if ( !defined($brokers) && defined($brokers_command) ) { + $brokers = `$brokers_command`; +} + $brokers //= "localhost:9092"; my $sproto = $cacert ? "ssl" : "plaintext";