MQ

(updated: )
  1. 1. RabbitMQ
  2. 2. ZeroMQ
  3. 3. ActiveMQ

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 to false
    • 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