美文网首页
5.mandatory和immediate参数

5.mandatory和immediate参数

作者: 12点前睡觉hhh | 来源:发表于2019-05-28 13:07 被阅读0次
    void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body)
                throws IOException;
    

    1.相同点

    1.mandatory和immediate都是basicPublish方法中的两个参数。
    2.都是boolean类型。
    3.它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。

    2.不同点

    1.当manadotory参数设置为true时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用basicReturn命令将消息返回给生产者。当设置为false出现上述情况,则直接丢弃。
    生产者可以通过channel.addReturnListener方法监听返回给生产者的消息
    使用实例如下:

    channel.addReturnListener(new ReturnListener() {
                @Override
                public void handleReturn(int replyCode, String replyText, String exchange, String routingKey, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    String returnMsg=new String(body);
                    System.out.println(body);
                }
            });
    

    2.当immediate参数设置为true时,如果交换器在将消息发送到队列时发现队列上并不存在任何消费者,那么这条消息不会存入队列;当与路由键匹配的所有队列队列都没有消费者时,通过basicReturn返回给生产者。
    RabbitMQ 3.0版本开始去掉了对immediate的支持。

    相关文章

      网友评论

          本文标题:5.mandatory和immediate参数

          本文链接:https://www.haomeiwen.com/subject/hkvrtctx.html