RabbitMQ 后台管理界面中添加Exchange的时候针对一些属性定义的解释:
- Name:队列名称
- Durablity:持久化选项,Durable(持久化保存),Transient(即时保存), 持久化保存会在RabbitMQ宕机或者重启后,未消费的消息仍然存在,即时保存在RabbitMQ宕机或者重启后交换机会不存在。需要重新定义该Exchange。
- Auto-delete: 为true时,当没有queue绑定在此exchange时,会自动删掉此exchange.
- Arguments:为插件和broker-specific feature使用。
- Internal (内部的): 如果设置为YES,表示这个exchange不可以被client用来推送消息,仅用来进行exchange和exchange之间的绑定。 设置为NO则不是内部使用的,可以用于client客户端直接发布消息
- Type:
- Direct: routingKey与bindingKey完全匹配
- Fanout: 广播形式与绑定关系无关
- Topic:routingKey与bindingKey正则匹配 如:routingKey=user.news / user.weather 与 bindingKey = user.# 匹配 。 符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*” 只会匹配到“audit.irs”
Name:队列的名称
Durability(持久性):如果启用,队列将会在server重启前后都有效。
Auto-delete : If yes, the queue will delete itself after at least one consumer has connected, and then all consumers have disconnected. 如果启用,当队列接受consumer链接后,队列将会在所有的消费者停止使用之后自动删除掉自身。
Arguments:
x-message-ttl:
通过在 queue.declare 中设置 x-message-ttl 参数,可以控制被 publish 到 queue 中的 message 被丢弃前能够存活的时间。当某个 message 在 queue 留存的时间超过了配置的 TTL 值时,我们说该 message “已死”。当一个 message 被路由到多个 queue 中时,其可以在不同的时间“死掉”。
服务器会保证“死掉”的 message 将不会被包括在任何的 basic.get-ok 或 basic.deliver 方法中。更进一步,服务器将努力在 TTL 到期或到期后的短时间内处理掉该 message 。
参数 x-message-ttl 的值 必须是非负 32 位整数 (0 <= n <= 2^32-1) ,以毫秒为单位表示 TTL 的值。这样,值 1000 表示存在于 queue 中的当前 message 将最多只存活 1 秒钟,除非其被投递到 consumer 上。实参可以是以下 AMQP 类型:short-short-int 、short-int 、long-int 或者 long-long-int 。