RabbitMQ Architecture
RabbitMQ Architecture
Mature platform—well supported, available for Java, client libraries, .NET, Ruby, node.js.
Offers dozens of plugins.
Durable message store—like a log, run in a server cluster, which keeps streams of records
in topics (categories).
Dumb broker / smart consumer model—does not try to track which messages are read by
consumers and only keeps unread messages. Kafka keeps all messages for a set period of
time.
Apache Kafka provides the broker itself and has been designed towards stream processing
scenarios. Recently, it has added Kafka Streams, a client library for building applications and
microservices. Apache Kafka supports use cases such as metrics, activity tracking, log aggregation,
stream processing, commit logs and event sourcing.
The following messaging scenarios are especially suited for Kafka:
Streams with complex routing, throughput of 100K/sec events or more, with “at least once”
partitioned ordering
Applications requiring a stream history, delivered in “at least once” partitioned ordering.
Clients can see a ‘replay’ of the event stream.
RabbitMQ can be used when web servers need to quickly respond to requests. This eliminates the
need to perform resource-intensive activities while the user waits for a result. RabbitMQ is also used
to convey a message to various recipients for consumption or to share loads between workers under
high load (20K+ messages/second).
Scenarios that RabbitMQ can be used for:
Applications that need to support legacy protocols, such as STOMP, MQTT, AMQP, 0-9-1.
Apache Kafka
Site:http://kafka.apache.org/
Implemenation: Scala
Platform: OS-Independent
License: Apache
Protocol: ?
MSMQ – Microsoft Messaging Queue (not Open Source)
Site: https://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx
Implemenation: C++
Apache ActiveMQ
Apache Qpid
Celery (software)
Gearman
IBM MQ
IronMQ
MQTT
Message-oriented middleware, (category)
OpenEdge Sonic MQ
RabbitMQ
Redis
SnakeMQ
HornetQ
Enduro/X Middleware platform
ZeroMQ