zoukankan      html  css  js  c++  java
  • RabbitMQ笔记-Exchange、Queue、Message详细说明

    Queue(队列):

    Queue参数

    • durable:是否持久化, 队列默认是存放到内存中的,rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库
    • exclusive:是否排外的,队列在当前connection下的channel中是共享的,其他connection下的channel访问不到,当connection关闭时队列删除
    • autoDelete:是否自动删除,当最后一个消费者断开连接之后队列是否自动被删除,可以通过RabbitMQ Management,查看某个队列的消费者数量,当consumers = 0时队列就会自动删除
    • Arguments:队列其他参数,Dictionary类型

    Arguments字典:

    • x-message-ttl #消息过期时间,message在队列的最大存活时间,单位毫秒。设置后队列Features属性显示TTL
    • x-expires #可以设置一个延迟时间,如启动一个生产者或启动一个消费者,消费者运行结束后10秒,队列会被删除
    • x-max-length #队列最大长度
    • x-max-length-bytes #指定队列最大内存
    • x-dead-letter-exchange #指定死信交换机
    • x-dead-letter-routing-key #指定死信routingKey
    • x-max-priority #设置优先级,优先级高的先发送consumer
    • x-queue-mode #lazy:lazy queue的信息尽可能的都保存在磁盘上,仅在消费者请求的时候才会加载到RAM中

    控制台队列属性:

    • Features属性:
      D:持久化
      TTL:设置了消息过期时间
      DLX、DLK:表示设置给队列设置了死信交换机和死信消息的routing key
    • Ready:消息的状态,等待投递的消息
    • Unacked:消息的状态,已投递给消费者,但是还没收到消费者确认信号的消息。如果RabbitMQ一直没有收到消费者的确认信号,并且消费此消息的消费者已经断开连接,则RabbitMQ会安排该消息重新进入队列,等待投递给下一个消费者

    注意:

    • RabbitMQ 不允许你绑定一个非坚固(non-durable)的交换机和一个durable的队列。反之亦然。要想成功必须队列和交换机都是durable的。
    • 一旦创建了队列和交换机,就不能修改其标志了。例如,如果创建了一个non-durable的队列,然后想把它改变成durable的,唯一的办法就是删除这个队列然后重现创建。因此,最好仔细检查创建的标志。
    • 队列、交换机可以持久化,绑定不能设置持久化,如果你绑定了一个durable的队列和一个durable的交换机,RabbitMQ会自动持久化这个绑定。
    • Unacked消息怎么处理:未ack的消息状态会变为Unacked,客户端断开连接后,状态会变为Ready
    • 建议使用长连接,长连接的基础之上使用多个channel
  • 相关阅读:
    Android布局尺寸思考
    正则表达式五分钟快速复习
    git gitignore文件失效处理
    华为手机Edittext光标(cursor)颜色修改
    AndroidStudio-OSX 常用快捷键整理
    OS X(EI Capitan)常用快捷键整理
    通过Foxit和坚果云实现iPad和PC的pdf同步阅读(修改,笔记)
    《程序员必读的职业规划书》职业生涯规划部分书摘及感想
    以神经网络使用为例的Matlab和Android混合编程
    写出优美代码的两个方式:一步到位VS迭代优化
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13358203.html
Copyright © 2011-2022 走看看