当前位置: 首页 > 网络应用技术

RabbitMQ中的消息会到期吗?

时间:2023-03-06 18:48:44 网络应用技术

  RabbitMQ中的新闻已经很长时间了?使用RabbitMQ的朋友可能会有这样的问题。今天,我将与您一起解决这个问题。

  首先,让我们看一下默认情况。

  默认情况下,该消息将不会到期,也就是说,如果没有消息到期,则该消息将在工作日发送时,该消息将不会到期。即使没有消耗消息,它也会始终将其存储在队列中。

  我不需要证明这种情况。我不需要再次证明它。任何参与RabbitMQ的RabbitMQ的人基本上都是这种情况。

  ttl(到期时间),消息的时间是消息的有效期。如果我们希望消息有生存时间,那么我们可以通过设置TTL设置此需求。如果消息的新闻超过了TTL尚未传达信息,此时该消息将成为此时。关于它,我稍后将向您介绍。

  TTL设置有两种不同的方式:

  如果两者都设置怎么办?

  短时间将占上风。

  当我们设置消息的有效期时,该消息将从队列中删除(输入死信队列,相同,不再标记),但是两种方式的时间安排存在一些差异:

  引入TTL后,让我们看一下特定的用法。

  接下来,所有代码歌曲GE均由Spring Boot中的AMPQ封装来解释。

  让我们首先查看单个消息的到期时间。

  首先创建一个Spring Boot项目,介绍Web和RabbitMQ依赖项如下::

  然后在应用程序中配置RabbitMQ连接信息。

  接下来,稍微配置消息队列:

  此配置类具有三个主要内容:配置消息队列,配置开关,并将两者绑定在一起。

  这种配置应该非常简单,没有什么可解释的,有一个独家,Song GE在这里说了更多:

  关于排他性,如果将其设置为true,则只能通过创建其连接来访问消息队列。没有其他连接可以访问消息队列。如果您尝试重新删除或以不同的连接访问他的队列,则系统将向Resourscelocked Orror报告资源。另一方面,对于独家队列,当连接断开时,消息队列将自动删除(否)是否会删除队列是否被宣布为持久队列)。

  接下来,提供一条发送接口的消息,如下:

  创建消息对象时,我们可以设置消息的到期时间。消息的到期时间为10秒。

  这可以!

  接下来,我们启动项目并发送消息发送测试。消息成功后,因为没有消费者,因此不会消耗新闻。打开兔子管理页面,然后单击“队列”选项卡。10s之后,我们会发现该消息已经消失了:

  很简单的!

  单个消息设置的到期时间是在发送消息时设置消息有效期。

  设置队列的消息到期时间,方式如下:

  设置完成后,我们修改了发送消息的逻辑,如下:

  可以看出,该消息是正常发送的,而无需设置消息到期时间。

  好的,启动项目,发送一条消息进行测试。检查兔子管理页面,如下:

  可以看出,消息队列的功能为d和ttl,d表示消息队列中的消息持久,TTL表示消息将过期。

  10s之后,刷新页面,发现消息的数量已恢复为0。

  这是设置消息队列的到期时间。设置设置后,所有输入队列的消息都有到期时间。

  另一个特殊情况是将消息的到期时间设置为0,这意味着,如果无法立即消耗消息,它将被扔掉。此功能可以部分替换rabbitmq3.0支持的直接参数。这是因为即时参数将具有基本参数。返回方法返回消息(可以使用死信列表实现此功能)。

  特定的代码歌曲不会证明,这应该更容易。

  有些朋友不禁问,删除的新闻去了哪里?它真的被删除了吗?什么都没有!这涉及到死信队列,让我们看一下致命的队列。

  死信开关,dead-ltter交换为dlx。

  死信开关用于接收死消息消息(死消息),《死信的新闻》是什么?一般消息变成了死信。有几种情况:

  当消息成为队列中的死信时,此时将发送到DLX,并且消息队列绑定DLX称为致命队列。

  DLX也是自然界的普通开关。我们可以为任何队列指定DLX。当队列中有一封死字母时,RabbitMQ将自动将此致命的字母发布给DLX,然后由DLX队列的另一条路(也就是,死了字母排队)。

  这很容易理解。绑定死字母开关的队列是死信队列。

  让我们看一个简单的例子。

  首先,让我们创建一个死字母开关,然后创建一个致命的队列,然后绑定致命的开关和死信队列:

  这实际上与普通开关没有什么不同。普通消息队列是相同的。

  接下来,为消息队列配置死信开关,如下:

  只有两个参数:

  这是配置的。

  将来,如果nack,拒绝或过期,发送到此消息队列的消息将发送到DLX,然后输入绑定到DLX的消息队列。

  死亡消息队列的消费和普通消息队列的消耗是相同的:

  很容易?

  好吧,我今天将与我的朋友们谈论RabbitMQ新闻的消息。有兴趣的朋友可以尝试?

  公共帐户Jiangnan在后台回复了本文的标题,您可以在本文中获得案例下载链接。

  参考资料: