暴力删除队列数据(不推荐,因为用户这个是初始化操作)
1、rabbitmqctl.bat list_queues
2、rabbitmqctl.bat stop_app
3、rabbitmqctl.bat reset
4、rabbitmqctl.bat start_app
5、rabbitmqctl.bat list_queues
.rdq数据解释说明
这类数据文件通常存储于隐藏文件夹AppData中,正常情况下ack正常,消费信息也是ok的情况下,偶有rdq文件堆积(一般为16M每个文件,按照数字排序,从小到大),等待消费结束会自动删除rdq中的消息存储。
此处需要注意的是持久化消息和非持久化消息,重启后,文件夹msg-store-persitent中的文件(持久化)将不会清空,而msg-store-transient中的文件(非持久化存储)将会清空。
换句话说就是持久化的消息会在磁盘上存储,而非持久化的消息在内存中存储,但是不要以为持久化消息就不在内存中,非持久化消息就不在磁盘中了(即消息并非固定按照持久化属性仅在磁盘或内存中存储。当内存占用达到一定水位时,内存中的存储的消息会被置换存储到磁盘上,以释放更多的内存;当消费者消费消息时,存储在磁盘上的消息又会被读取加载到内存中)。
rabbitmq中内存总是不够用,消费来不及怎么办呢?黄金搭档之持久化消息与惰性队列(默认的为default普通队列)
RabbitMQ从3.6.0版本开始引入了惰性队列(Lazy Queue)的概念。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时,惰性队列就很有必要了。