做自己的网站能赚钱吗,网站基础建设英文,网站建设价格差别,紫金优化网站制作大纲 抛弃消息创建最大长度队列绑定实验 转存死信创建死信队列创建可重写Routing key的最大长度队列创建绑定关系实验 在一些业务场景中#xff0c;我们只需要保存最近的若干条消息#xff0c;这个时候我们就可以使用“最大长度队列”来满足这个需求。该队列在收到消息后我们只需要保存最近的若干条消息这个时候我们就可以使用“最大长度队列”来满足这个需求。该队列在收到消息后如果达到长度上限会将队列头部最早的的信息从队列中移除。 在进行实验之前我们先创建一个交换器direct.max.length用于接收消息。
抛弃消息
创建最大长度队列
我们创建一个名字叫queue.max.length的队列并且配置属性x-max-length的值为3。这就意味着这条队列最大消息个数是3超过3个消息时老消息会被移除。
绑定
我们定义Routing key是to.queue.max.length时向上述创建的队列queue.max.length发布消息。
实验
我们依次发送消息内容是1、2、3、4的消息。 但是该队列最多只保存了3条消息 最早的一条消息1被抛弃掉了
转存死信
如果我们不希望消息被抛弃则可以将其转存到死信中。 转存到死信有两个方案在《RabbitMQ实践——使用死信机制对异常消息进行处理》中已经有探讨
使用独立的死信交换器重写Routing key
本文我们将使用相对简单的“重写Routing key”方案这样可以让我们少创建一个交换器。
创建死信队列
我们创建一个用于保存死信的队列queue.dead.letter。没做什么特殊配置。
创建可重写Routing key的最大长度队列
我们创建一个新的队列queue.max.length.with.dead.letter.routing.key。 它制定了下面几个属性
x-max-length队列最多保存3条消息。x-dead-letter-exchange使用direct.max.length交换器进行消息路由。这个交换器也是原始消息的交换器。x-dead-letter-routing-key修改从队列顶部移除的消息的Routing key为to.queue.dead.letter以供交换器路由。
创建绑定关系
在之前案例创建的交换器direct.max.length上我们将上述队列绑定。
实验
我们使用Routing keyto.queue.max.length.with.dead.letter.routing.key向queue.max.length.with.dead.letter.routing.key队列发送了4条消息最终它只保存了后3条最早的一条会被转存到死信队列中。