redis 的简单干练,但是他没有ack的概念,我后端从队列里面获取了任务后,如果线程崩溃了,这个任务也就消失了,当然我可以在我的程序层面实现任务的可靠性,比如做个双队列和多元数据什么的。
而rabbitmq本身就提供了这些方方面面的可靠性
basicConsumer,basicGet
channel.basicConsume(queue, noAck, queueingConsumer);
channel.basicGet(queue, noAck);
noAck = true,不需要回复,接收到消息后,queue上的消息就会清除
noAck = false,需要回复,接收到消息后,queue上的消息不会被清除,直到调用channel.basicAck(deliveryTag, false); queue上的消息才会被清除
而且,在当前连接断开以前,其它客户端将不能收到此queue上的消息