MQ
(updated: )
RabbitMQ
- AMQP
- less scalable
- relatively slow, as the central node adds latency and big message envelopes
- supports persistence across reboot
ZeroMQ
- AMQP
- lightweight
- high throughput / low latency
- very flexable, that you’ll have to implement features that provided by RabbitMQ by youself
- doesn’t support persistence across reboot
ActiveMQ
- in the middle
- Persistence
- KahahDB (default), since 5.3
- LevelDB (future, as it’s faster and cheaper), since 5.8
- AMQP v1.0
- MQTT v3.1
- Durable:
- Persistent
- protocols:
- static: defining networks of brokers with known addresses
- failover: providing reconnection logic even for a single broker
- multicast: defining dynamic networks of brokers
- discovery: clients to connect dynamic network of brokers
- peer: connecting multipile enbedded brokers
- fanout: producing messages to multipile unconnected brokers
- message store
- KahaDB
- AMQ: best option when throughput is the main requirement.
- two seperated files for each index
- an index per destination
- So, do not use it if you have thousands of queues, as rebuildindexes takes a long while
- JDBC
- Memory
- finite amount of messages, and will be consumed quickly
- which is actually setting
persistent
tofalse
- Caching
- caching messages for reconnection, so that it recovers quickly
subscription recovery policy
- fixed size (default)
- fixed count
- query based (matching)
- timed
- last image
- no
- HA
- Shared nothing (when some down time on failure is acceptable)
- Shared storage