新建队列
新建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中如果处理消息时出现异常,为什么会不停消费同一条消息