4 ms·
You've made very good points about smart clients, but at some point one has to ponder if it's worth it or one should just not use kafka in the first place. I'v
by raducu 3y ago
You've made very good points about smart clients, but at some point one has to ponder if it's worth it or one should just not use kafka in the first place.
I've seen databases used as messaging queues and if it was up to me, I'd never do that. It's usually "but we already have kafka + db, why burden ourselves with another messaging technology?", which is fair.
> You can stream messages into a buffer and process them in parallel, and commit the low watermark offset whenever it changes, as described above. I've implemented this in .NET with Channels and saturate the CPUs with no problem.
That is very nice -- certainly seems better than just batch processing of kafka messages, but you're still just kicking the can down the road.
How large do allow the buffer to become and what do you do when it's getting too large?
You probably use a DLQ.
Don't get me wrong, I think the buffer idea probably works most of the time.
- ryanjshaw 3y agoCompletely agree. Kafka was another team's decision, not mine, so I had to figure it out. RabbitMQ is very convenient in that you don't need to read a couple of books on reliable data integration patterns to get something working simply and intuitively. I am fond of Kafka now that I understand it, but I was also an assembly language programmer in a past life so my opinion is probably in the minority. Regarding the buffer size: you need to implement back pressure, especially if you are CPU and not IO bound; it's another thing that's easy to get wrong with Kafka.