Comments (10)
librdkafka doesn't have a batch consume interface, so you'll have to stick to the single message one. It's still really fast as it uses internal queues so you shouldn't have to worry about performance.
from cppkafka.
rd_kafka_produce_batch
rd_kafka_consume_batch_queue
i find delay between produce message to consume message one by one is not satisfy
from cppkafka.
I just pushed Consumer::poll_batch
that consumes a batch of messages. I don't think it's worth adding a wrapper for rd_kafka_produce_batch
as it's a very different API from rd_kafka_producev
(it uses rd_kafka_message_t
, rd_kafka_topic_t
, etc). How many messages per second are you producing that producing one by one is not performant? Keep in mind kafka will batch them automatically already.
from cppkafka.
producer is not important , the key is comsumer needs poll_batch
i create a topic for 1 rep and 4 partitions for test
producer code like this
while(true) {
std::string comment = "stephen";
int partition = (count++) % 4;
comment += std::to_string(count);
producer.produce(MessageBuilder("deal").partition(partition).payload(comment));
if(count % 1000 == 0)
sleep(1);
}
and i create 4 consumers ,but i have only 1 cpu core...... it really too slow for one consumer,even other consumer is done
from cppkafka.
Are you committing the offsets manually or doing that automatically via rdkafka on the consumer side?
from cppkafka.
{ "enable.auto.commit", false }
from cppkafka.
That's not very helpful, it only means you're not committing offsets automatically. Are you committing messages syncrhonously? Asynchronously? One commit per message? One commit per multiple messages? How many messages?
from cppkafka.
while(running) {
Message msg = consumer.poll();
if(msg) {
if(msg.get_error()) {
if(!msg.is_eof()) {
cout << "[+] Received error notification: " << msg.get_error() << endl;
}
} else {
if(msg.get_key()) {
cout << msg.get_key() << " -> ";
}
cout << msg.get_payload() << endl;
consumer.commit(msg);
}
}
}
from cppkafka.
So, you're doing a synchronous commit, once every message, which is literally the worst commit strategy you could use. Each commit can take well over 100ms, so you're doing at most 10 messages per second. What's taking time on your consumer is not the consumption but the message commits.
You should batch commits rather than messages and only commit once every X messages.
from cppkafka.
ok thanks :)
from cppkafka.
Related Issues (20)
- Cannot pull using consumer HOT 1
- poll_batch does not trigger commit when auto.commit is true ? HOT 1
- How to remove topic using the API
- Consumer misbehavior with newer librdkafka versions HOT 1
- Can't build tests on Ubuntu 22.04 (Jammy)
- produer success but kafka shell consumer all "null" HOT 1
- How to use BufferedProducer to send binary data?
- Dll import function not allowed
- create BufferedProducer<std::string> producer globally
- Is there any way to build it without "boost"? HOT 1
- Please help me, I have tried a variety of methods to compile, all failed, including using the method provided by chatGPT 4.0. also failed. HOT 1
- How to set ttl?
- How to get number of messages in the topic?
- add_library(Rdkafka::rdkafka) issue
- CPPKafka crashes when trying to create a configuration in Windows
- What happens if Kafka was offline ? HOT 1
- Automate Compilation of "examples" in Build Process
- warning: object backing the pointer will be destroyed at the end of the full-expression
- cppkafka::produce not flushing
- clang complains about parameter used in std::atomic_flag constructor
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 cppkafka.