哈,又一款超级简单的队列(MQ)实现方案来了~
开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了。很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化。本着DIR精神, 也琢磨了一个超级简单的队列实现。
说是超级简单,嗯,绝对是超级简单,队列的存储采用Redis进行持久化存储,采用Netty提供HTTP方式的队列的出/入。Redis的客户端采用的Jedis。然后呢,然后就没了啊。
一。Redis
Redis内置订阅发布模型(Publish/Subscribe),其缺陷是,不存储,一旦订阅者断线,将无法接收到消息,再次连接上之后,在断线期间发布者发布的消息都是无法获取到的。只能采用list数组实现,采用rpush/lpop组合命令来实现先进先出的队列模型,当然redis也提供了阻塞版本的blpush/brpush/blpop/brpop等,就看我们实际环境下如何使用了。
JAVA客户端使用Jedis,提供接口也很丰富。但要注意的是,需要使用连接池,否则在大数量的情况下,有可能jedis的连接不够用。