rabbitmq使用记录- 死信队列

1、什么是RabbitMQ?为什么使用RabbitMQ?

答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;

可以用它来:解耦、异步、削峰。

 

2、RabbitMQ有什么优缺点?

答:优点:解耦、异步、削峰;

缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低;

增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。

 

3、如何保证RabbitMQ的高可用?

答:没有哪个项目会只用一搭建一台RabbitMQ服务器提供服务,风险太大;

 

死信队列(死信交换机)

一:死信队列DLX(Dead-leater-exchange)

1.1)什么是死信?

就是在队列中的消息如果没有消费者消费,那么该消息就成为一个死信,那这个消息被重新发送到另外一个exchange上的话,

那么后面这个exhcange就是死信队列

1.2)消息变成死信的几种情况

消息被拒绝:(basic.reject/basic.nack)并且requeue(重回队列)的属性设置为 false 表示不需要重回队列,那么该消息就是一个死信消息

消息TTL过期

 消息本身设置了过期时间,或者队列设置了消息过期时间x-message-ttl

 队列达到最大长度:比如队列最大长度是3000 ,那么3001消息就会被送到死信队列上.

 

1.3)死信队列也是一个正常的exchange,也会通过routingkey 绑定到具体的队列上。

你可能感兴趣的:(rabbitmq使用记录- 死信队列)