channel声明队列的queueDeclare⽅法的参数说明如何与同学相处
durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang⾃带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库
麦霸ktvexclusive:是否排外的,有两个作⽤,⼀:当连接关闭时connection.clo()该队列是否会⾃动删除;⼆:该队列是否是私有的private,如果不是排外的,可以使⽤两个消费者都访问同⼀个队列,没有任何问题,如果是排外的,会对当前队列加锁,其他通道channel是不能访问的,如果强制访问会报异常:com.rabbitmq.client.ShutdownSignalException: channel error; protocol method:
#method<channel.clo>(reply-code=405, reply-text=RESOURCE_LOCKED - cannot obtain exclusive access to locked queue ‘queue_name’ in vhost ‘/’, class-id=50, method-id=20)⼀般等于true的话⽤于⼀个队列只能有⼀个消费者来消费的场景autoDelete:是否⾃动删除,当最后⼀个消费者断开连接之后队列是否⾃动被删除,可以通过RabbitMQ Management,查看某个队列的消费者数量,当consumers = 0时队列就会⾃动删除
东晋谢安arguments:
蔡文姬王者荣耀
小学生美文>探索月球队列中的消息什么时候会⾃动被删除?
Message TTL(x-message-ttl):设置队列中的所有消息的⽣存周期(统⼀为整个队列的所有消息设置⽣命周期), 也可以在发布消息的时候单独为某个消息指定剩余⽣存时间,单位毫秒, 类似于redis中的ttl,⽣存时间到了,消息会被从队⾥中删除,注意是消息被删除,⽽不是队列被删除, 特性Features=TTL, 单独为某条消息设置过期时间AMQP.BasicProperties.Builder properties = new
AMQP.BasicProperties().builder().expiration(“6000”);奇幻小说排行榜
channel.basicPublish(EXCHANGE_NAME, “”, properties.build(), Bytes(“UTF-8”));
Auto Expire(x-expires): 当队列在指定的时间没有被访问(consume, basicGet, queueDeclare…)就会被删除,Features=Exp
Max Length(x-max-length): 限定队列的消息的最⼤值长度,超过指定长度将会把最早的⼏条删除掉, 类似于mongodb中的固定集合,例如保存最新的100条消息, Feature=Lim
Max Length Bytes(x-max-length-bytes): 限定队列最⼤占⽤的空间⼤⼩, ⼀般受限于内存、磁盘的⼤⼩, Features=Lim B
闽南地区Dead letter exchange(x-dead-letter-exchange): 当队列消息长度⼤于最⼤长度、或者过期的等,将从队列中删除的消息推送到指定的交换机中去⽽不是丢弃掉,Features=DLX
Dead letter routing key(x-dead-letter-routing-key):将删除的消息推送到指定交换机的指定路由键的队列中去, Feature=DLK Maximum priority(x-max-priority):优先级队列,声明队列时先定义最⼤优先级值(定义最⼤值⼀般不要太⼤),在发布消息的时候指定该消息的优先级, 优先级更⾼(数值更⼤的)的消息先被消费,
Lazy mode(x-queue-mode=lazy): Lazy Queues: 先将消息保存到磁盘上,不放在内存中,当消费者开始消费的时候才加载到内存中