- 本文出现的代码只是简述,详细代码之后文章有涉及。
简单队列
RabbitMQ中的消息都只能存储在Queue中,生产者(下图中的P)生产消息并最终投递到Queue中,消费者(下图中的C)可以从Queue中获取消息并消费。
工作队列
即单生产者,多个消费者消费队列的情况。
工作队列–轮询分发
即使一个处理快,一个处理慢,消息队列也还是平均的分发
工作队列–公平分发(fair dipatch)
-
消费者关闭自动应答,ack改为手动;
每个消费者发送确认消息之前,消息队列不发送下一个消息到消费者,一次只处理一个消息,限制发送给同一个消费者不得超过一个消息
生产者(消息队列)
//保证一次只分发一个 int prefetchCount=1; channel.baseicQos(prefetchCount)
消费者
//保证一次只分发一个 int prefetchCount=1; channel.baseicQos(prefetchCount); channel.basicAck(envelope.getDeliveryTag