2 ms·
> You can get all the same advantages of message acknowledgments, but now you can also replay queues with rmq you can reject/nack a message and have it put bac
by whalesalad 3y ago
> You can get all the same advantages of message acknowledgments, but now you can also replay queues
with rmq you can reject/nack a message and have it put back on the queue. rmq is not well suited for long term historical retention inside queues a-la kafka's logs but it is possible to do.
> let different applications use the messages (handy for cross cutting event/notification systems)
rmq also does a publish once and fanout to multiple queues to support this. data is replicated so that could be a deal breaker, but it is possible.
how often have you had to diagnose a stuck consumer or some other kind of offset glitch where a consumer is unable to resume where it left off?
not knocking kafka here but I do think it is a tool you should reach for when you need to solve a very hyper focused problem, while rabbit is a tool more suited to most cases where queuing is required. kafka is a code smell in a lot of organizations from my experience - most do not need it.
- raducu 3y ago> afka is a code smell in a lot of organizations from my experience - most do not need it. Kafka is really nice if you don't care that much about latency during peak load and you don't have absurd processing times for messages.
- ceencee 3y agoKafka can sustain sub 20ms at millions or even billions per second scale. Processing time delays is bad consumer code and partition design smell. Aka , your consumer shouldnt depend on a slower resource within an ordering domain. This can also be mitigated with an async consumer
- FridgeSeal 3y agoThese sound like consumer issues to me. Kafka had been extremely reliable with latency, even under load in my experience. If you’ve got badly lagging consumers that are trying to read from very old points in the topic while everyone else is at the head, you’ll definitely see some increased resource usage, but again, that’s mostly a consumer issue, and I’ve need seen performance degrades that much.
- monksy 3y agoIf you're concerned about latency you might want to consider zeromq. Stream processing doesn't really have a time expectation to it.
- FridgeSeal 3y ago> with rmq you can reject/nack a message and have it put back on the queue I know other systems have semi-similar mechanisms, however most of them retain the “someone is the sole owner of this message” style design, which I think is fundamentally limiting. Owning application dies, is it acked or not? Acks but never gets around to putting it back on the queue? Who takes priority if 2 separate applications wish to watch the same stream of events? I think Kafka’s “nobody owns it, acks are consumer group level” give you the same advantages for the application itself, without a number of the more difficult complications. > rmq also does a publish once and fanout to multiple queues to support this Which is probably fine for small volume or velocity topics, but is going to cause all sorts of load issues at higher scale.
- whalesalad 3y ago> Who takes priority if 2 separate applications wish to watch the same stream of events? each app would get its own queue, the messages would hit a fanout exchange that would route the same message to both queues.