Kestrel es una cola de mensajería distribuida que corre en la JVM Java.

Soporta 3 protocolos de comunicación:

· memcache: protocolo memcache

· thrift: Apache Thrift-based RPC

· text: protocol basado en texto

Kestrel está pensado para ser:

· Rápido

· Pequeño: son 2500 líneas de Scala, se basa on Netty

· Durable: las colas se almacenan en memoria para ser rápidas, pero se logean a disco para que los servidores puedan pararse o moverse sin perder datos

· Confiable: un cliente puede solicitar un ítem de una cola, si el cliente desconecta de Kestrel antes de confirmar la propiedad de ese ítem este ítem se envía a otro cliente, por lo que evita que se pierdan mensajes.

Kestrel no está pensado para:

· Transaccionalidad: se maneja la propiedad de un ítem pero no pueden agruparse varias operaciones en una unidad atómica

· Ordenación: los clientes se conectan con un Servidor al azar

Su versión actual es la 2.4.1 y podéis descargarlo desde aquí, también podéis descargaros los fuentes desde GitHub.

Kestrel integra varios tests enfocados en demostrar el rendimiento como estos:

Insertar mensajes:

Consumición de 1 item por varios clientes:

Se configuración tiene este aspecto:

Donde se ve que se puede configurar tamaño máximo de una cola, número máximo de ítems en la cola, expiración de un ítem,…

Podéis leer algo más sobre Kestrel en su Working Guide