Kestrel是twitter的开发团队用scala语言写的开源消息中间件,可以将消息持久存储到磁盘上,也可以将消息存储于内存中,但是不论保存磁盘还是内存中都可以设置消息存储的超期时间长短。
原先Kestrel是由Ruby写的Starling项目,但是后来 twitter的开发人员尝试用scala重新实现,并且可以支持Memcached的部分协议,例如:GET、SET、FLUSH_ALL、STATS。对于Kestrel 服务器端而言如果有N个接收端连接在Kestrel服务器上,那么每个接收端会平均或者随机的收到不同的消息,并且发送端发过了消息接收端就算不接收,等到接收端再上去接收的时候还能收到消息,因为Kestrel支持消息持久化。
Kestrel 不存在主从 和 集群的概念,只存在分布式的说法,这有点类似memcached 通过客户端组成一个环状,对于Kestrel 服务器端而言,如果服务器端收到消息了,但是里面有消息没有收下来就挂了,再重启的时候接收端还能收到之前的消息。
http://www.javabloger.com/article/mq-kestrel-redis-for-java.html