https://github.com/mempko/pkafka
Perl 6 client for Apache Kafka
https://github.com/mempko/pkafka
kafka perl6
Last synced: 9 months ago
JSON representation
Perl 6 client for Apache Kafka
- Host: GitHub
- URL: https://github.com/mempko/pkafka
- Owner: mempko
- License: lgpl-3.0
- Created: 2016-01-03T09:05:21.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-04-26T02:11:50.000Z (about 9 years ago)
- Last Synced: 2025-01-31T07:51:28.090Z (over 1 year ago)
- Topics: kafka, perl6
- Language: Perl6
- Size: 29.3 KB
- Stars: 13
- Watchers: 3
- Forks: 5
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
PKafka
======
A Perl 6 client for [Apache Kafka](https://kafka.apache.org/).
You can use Perl 6's reactive programming features to 'tap' Kafka topics and process messages.
SYNOPSIS
======
use PKafka::Consumer;
use PKafka::Message;
use PKafka::Producer;
sub MAIN ()
{
my $brokers = "127.0.0.1";
my $test = PKafka::Consumer.new( topic=>"test", brokers=>$brokers);
my $test2 = PKafka::Consumer.new( topic=>"test2", brokers=>$brokers);
my $producer = PKafka::Producer.new( topic=>"test2", brokers=>$brokers);
$test.messages.tap(-> $msg
{
given $msg
{
when PKafka::Message
{
say "got {$msg.offset}: { $msg.payload-str } ";
$producer.put("from test '{$msg.payload-str}'");
}
when PKafka::EOF
{
say "Messages Consumed { $msg.total-consumed}";
}
when PKafka::Error
{
say "Error {$msg.what}";
$test.stop;
}
}
});
$test2.messages.tap(-> $msg
{
given $msg
{
when PKafka::Message
{
say "got {$msg.offset}: { $msg.payload-str } ";
}
}
});
my $t1 = $test.consume-from-beginning(partition=>0);
my $t2 = $test2.consume-from-beginning(partition=>0);
await $t1;
await $t2;
}
DEPENDENCIES
======
This library wraps [librdkafka](https://github.com/edenhill/librdkafka) and it requires it to be installed to function.
WARNING
======
This library is ALPHA quality software. Please report any bugs and contribute fixes.