最近工作中又重新使用了rabbitmq这个消息队列组件,由于距离之前使用相隔很久,很多特性有些记不清了。这里记录一下:
下面列出了rabbitmq几个参数的含义:
durable | rabbitMQ默认将消息存储在内存中,若rabbitMQ宕机,那么所有数据就会丢失,所以在声明队列的时候可以声明将数据持久化,但是如果已经声明了一个未持久化的队列,那么不能修改,只能将这个队列删除或重新声明一个持久化数据。 |
---|---|
autoDelete | 当所有消费客户端连接断开后,是否自动删除队列、Exchange等数据。 |
exclusive | 使用此queue的消息订阅端断开后,是否自动将queue删除(这种队列适用于一个队列仅对应一个客户端收发消息的场景) |
noWait | 是否非阻塞,true表示是。阻塞:表示创建交换器的请求发送后,阻塞等待RMQ Server返回信息。非阻塞:不会阻塞等待RMQ Server的返回信息,而RMQ Server也不会返回信息。(不推荐使用) |
exchange | 消息交换机,它指定消息按什么规则,路由到哪个队列(若不使用交换机,则传递参数为空”“)。 |
mandatory | 当mandatory标志位设置为true时,如果exchange根据自身类型和消息routeKey无法找到一个符合条件的queue,那么会调用basic.return方法将消息返回给生产者(Basic.Return + Content-Header + Content-Body);当mandatory设置为false时,出现上述情形broker会直接将消息扔掉。 |
immediate | 当immediate标志位设置为true时,如果exchange在将消息路由到queue(s)时发现对于的queue上么有消费者,那么这条消息不会放入队列中。当与消息routeKey关联的所有queue(一个或者多个)都没有消费者时,该消息会通过basic.return方法返还给生产者。 |