Skip to content
shahprincea edited this page Nov 15, 2014 · 16 revisions

Motivation

As of today there are many queues which follows AMPQ and STOMP protocol. To name few RabbitMQ, Kafka, ActiveQ etc. However, with each queue there are pro and cons. This project is centered around various use cases and evaluate how RabbitMQ handles them.

Environment

SingleNode Setup

  • OS : Ubuntu 14.04 on a VM (VMWare fusion)
  • CPU : Intel® Core™ i7-4870HQ CPU @ 2.50GHz × 2
  • Memory : 3.9 GiB
  • OS Type : 64-bit
  • Disk : 16.8 GB
  • RabbitMQ Server : 3.2.4
  • RabbitMQ java Client : 3.4.1

MultiNode Setup

We have 3 node cluster build using above single Node machines.

ref: http://www.rabbitmq.com/clustering.html

Installing RabbitMQ

  1. Add the following line to your /etc/apt/sources.list: "deb http://www.rabbitmq.com/debian/ testing main"
  2. wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
  3. sudo apt-key add rabbitmq-signing-key-public.asc
  4. Run apt-get update.
  5. sudo apt-get install rabbitmq-server
  6. rabbitmqctl start/stop/status to start/stop/status rabbitmq server
  7. Install rabbitMQ Management Plugin see https://www.rabbitmq.com/management.html

Note: logs are located at /var/log/rabbitmq directory

ref: http://www.rabbitmq.com/install-debian.html

Use cases

  1. Consumers can be added/removed dynamically
  2. If consumer dies after dequeueing that msg should be re-delivered to other consumer.
  3. Queue should never take away work from consumer even if consumer takes forever to complete.
  4. If consumer hangs on msg it should send msg to other consumer
  5. Queue should not never loose msg
  6. Queue should support Batch operations.
  7. Queue should support various msg sizes (2k, 20K, 200K, 2MB, 20MB).
  8. Latency between msg produced to consumed (durable and non durable msg)
  9. Queue should not slow down when you have multiple consumers (High Availability)
  10. Queue should block producers in case of Disk full (or reaching some threshold)
  11. Queue should have fixed size
  12. Queues should be distributed in cluster

Clone this wiki locally