Comments (7)
This library doesn't provide the command to consume messages, so you are free to implement it whatever way you think is better, but yeah, if all consumers looks like this, it's a good implementation.
from laravel-kafka.
Hi @renatocosta, i'm building and example project using this library. Will make it public as soon as it's ready, but for now, you can create a command something like this:
class ConsumeXKafkaTopic extends Command
{
protected $signature = 'kafka:consume-X-topic';
protected $description = 'Consume messages from kafka topic X';
public function handle()
{
$consumer = Kafka::createConsumer()
->subscribe('X-topic')
->withConsumerGroupId('your-group-id')
->withHandler(new XTopicConsumer())
->withAutoCommit()
->build();
$consumer->consume();
}
}
from laravel-kafka.
Thank you again @mateusjunges
By the way, When I used Enqueue lib had a class processor to keep on reading the messages 24/7.
Is there in this library anything like that?
from laravel-kafka.
I think enqueue use queue-interop
to do this. I haven't tested it so can't confirm it works with this library.
from laravel-kafka.
That's right.
If I understand correctly the ConsumeXKafkaTopic class would be called manually via the command line so that reading a new message?
from laravel-kafka.
Yes, but i use supervisor to run the command in background for me.
from laravel-kafka.
I don't know as you implemented it but I think that it would be a reusable class to be derived from another one.
class ConsumeXKafkaTopic extends Command
{
protected $signature;
protected $description;
protected string $topicName;
protected $groupId;
protected $topicConsumerHandler;
public function handle()
{
$consumer = Kafka::createConsumer()
->subscribe($this->topicName)
->withConsumerGroupId($this->groupId)
->withHandler($this->topicConsumerHandler)
->withAutoCommit()
->build();
$consumer->consume();
}
}
final class ConsumeUsers extends ConsumeXKafkaTopic
{
public function __construct()
{
parent::signature = ' kafka:consume-users-topic';
parent::description = 'Consume messages from kafka topic Users';
parent::topicName = 'users';
parent::topicConsumerHandler = new XTopicConsumer();
parent::groupId = 'UserGroups';
}
public function handle()
{
parent::handle();
}
}
Just an idea.
from laravel-kafka.
Related Issues (20)
- Failed to resolve `broker:9092` HOT 4
- Getting a timeout issue, while trying to publish a message. HOT 7
- Undefined constant \"Junges\\Kafka\\RD_KAFKA_PARTITION_UA\ HOT 3
- Upstash Support - Producer not sending messages. HOT 3
- Wrong return type in Junges\Kafka\Config\Config->getCommit HOT 2
- Cannot Consume published messages in laravel 11 and php 8.3.6 HOT 15
- Issue consuming records from Avro topic HOT 1
- Cannot consume produced messages in v2.0 HOT 2
- What do we need to set for the `--consumer` flag. HOT 1
- Message consuming is still an issue in v2.1 HOT 10
- Encoded payloads: Is it possible with Avro Serializer to Save encoded messages in Kafka when sending it using AvroSerialize and doing the opposite when reading with Deserializer HOT 1
- Is there any support to Retry policies ? HOT 2
- [QUESTION] Possibility to describe topic / calculate read backlog HOT 1
- [Question/bug] Consuming Tombstones and send it to dlq throws $payload must be of type string, null given HOT 1
- cant send message HOT 8
- Error "Specified group generation id is not valid" during consumption HOT 3
- How to commit each message in withHandler HOT 1
- Missing messages HOT 2
- Customizable flush retried and timeout
- stopAfterLastMessage not working as expected. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from laravel-kafka.