RabbitMQ中Queue详细介绍

新建队列

新建Queue时有很多参数,都代表什么含义,在这里解释一下:

前述:Rabbit版本为3.7.6 ErLang 版本为 21.0.1

Name

必填项,队列的名字,建议格式可以为多个字段,表示队列中存放的内容,比如task.queue

Durability

是否需要持久化,有两个选项Durable(长久的)和Transient(临时的)

Auto delete

是否自动删除,如果选择yes,则消息会被其中一个消费者所消费,之后队列会自动销毁,其他消费者也会断开连接(队列都没了,连接肯定断了)。

Arguments

RabbitMQ有很多的参数可以设置

x-message-ttl:值为Number类型,表示消息在队列中的存活时间,单位为毫秒

x-expires:值为Number类型,表示队列存在的时间,单位为毫秒

x-max-length:值为Number类型,一个队列中能够存放的最多消息个数,超过设定个数之后就会从head开始丢弃消息。也就是先到的消息会先被丢弃。

x-max-length-bytes:值为String类型,队列中每个消息的最大字节数,超过设定个数之后就会从head开始丢弃消息。也就是先到的消息会先被丢弃。

 x-overflow:值为String类型,设置队列溢出时的行为,可选值为drop-head或reject-publish

x-dead-letter-exchange:值为String类型,如果消息被拒绝或者过期后,消息被重新放入的exchange名称

x-dead-letter-routing-key:值为String类型,当消息dead-lettered,根据routing key 进行路由消息,如果没有设置,会使用消息的原始routing key

x-max-priority:值为Number类型,最大的消息优先级,如果不设置,则不支持消息优先级

x-queue-mode:值为String类型,如果设为lazy,则会将尽可能多的消息保存到磁盘上,减少内存的使用,如果不设置,则所有消息都放到内存,保证最快速度的分发

x-queue-master-locator:值为String类型,当在集群中时,设置队列为master location mode,会决定队列master在集群中的位置

 

 

遗留问题:

rabbitMQ与kafka的对比

SpringMVC如何支持RabbitMQ(web.xml配置)

 listener中如果处理消息时出现异常,为什么会不停消费同一条消息

参考文献:

https://www.rabbitmq.com/documentation.html

https://www.rabbitmq.com/getstarted.html

https://www.cnblogs.com/frankyou/p/5283539.html

https://blog.csdn.net/u012758088/article/details/78024581

http://www.amqp.org/

原文地址:https://www.cnblogs.com/yaochc/p/9273321.html