RabbitMQ之死信队列、延迟队列、优先级队列

RabbitMq

从机制上看,rabbitMq除了有topic和queue的概念,(发消息的时候要指定消息的key,这个key之后会做路由key使用),还有一个概念叫做交换机exchange,exchange有四种,drdirect、fanout、topic、header。就是说发消息给rabbitMq时,消息需要有个key,并告知发给那个exchange,exchange收到后根据key分发或者广播给queue,消费者从queue总取消息,并不直接接触到exchange。
如果没有指定exchange,默认是direct类型的exchange,如果不指定队列和交换机的绑定关系,默认按照消息的key绑定对应的queue,此时发一个消息,消息的key是什么,就会被默认交换机发送个对应的queue。

rabbitmq同样也支持主从复制和集群。但是rabbitmq的集群非常多样化,而且需要至少一台机器做为磁盘节点,可以持久化queue和exchange的信息,其他的可以为内存节点。普通集群中,只有exchange,queue这些定义是分布在所有机器上的,而queue中的数据不是冗余的,比如有三台rabbitmq组成了集群,他们共享同样的exchange,queue,但是一条消息数据落到了第一台机器上,另外两台实际上没有这条数据的。 对于整个集群的使用,这样其实没有任何问题。 但出于高可用的角度来想,还是需要完完全全的分布式集群的,万一中间有数据这台机器挂了? rabbitmq对此也有支持,把队列数据也冗余存到三台机器上,称之为镜像队列,但性能要比普通集群低,毕竟一条消息被复制到其他机器上是耗时的事情。

死信队列、延迟队列

死信队列指的是因为某些原因,队列中的某些消息变成死信后,它们被重新路由到死信交换机(DLX)绑定的队列上,该队列即为死信队列。
消息变成死信队列的原因有三种:

  • 消息被拒绝,并设置requeue参数为false
  • 消息过期
  • 队列达到最大长度
  • 在这里插入图片描述
    在这里插入图片描述

优先级队列 x-max-priority

指的是优先级高的可以被优先消费,但是如果生产消息的速度远远赶不上消费消息的速度,那么在队列中的消息最多也只有一个,因为如果生产出了一条消息,就会被立马消费,此时也就没有优先级的概念了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值