1、概述
mandatory和immediate是AMQP协议的中basic.publish方法中的两个标识位,他们都有当消息传递过程中不可到达目的时返回给生产者的功能。
2、mandatory
当mandatory标志位设置为true时,如果交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当mandatory设置为false时,出现上述情况,新消息直接被丢弃。
3、immediate
当immediate参数设置为true时,如果交换器再将消息路由到一个队列中,否则将消息返回给生产者。immediate参数告诉服务器,如果该消息关联的队列上有消费者,则立刻投递;如果所有匹配的队列上都没有消费者,则直接将消息返还给生产者,不用将消息存于的队列而等待消费者。
RabbitMQ 3.0版本开始去掉了对immediate参数的支持,原因是因为immediate参数会影响镜像队列的性能、增加了代码的复杂度,建议采用TTL和DLX的方法替代。