当前位置: 首页 > 知识库问答 >
问题:

如何在摘下Amqp/RabbitMQ队列(Spring AMQP)之前检查

宗政安歌
2023-03-14

场景:微服务从RabbitMQ队列中拾取消息,将其转换为对象,然后微服务对外部服务进行REST调用。

它将处理成千上万条这样的消息,如果我们知道外部Rest服务关闭,有没有办法告诉我的消费者不要从队列中拾取消息?

我知道我可以在收到一条单独的消息后重试,但如果我知道它被拒绝了,我甚至不想再收到它。我不想在DLQ中处理成千上万的消息。

而且它感觉像一个断路器设计模式,但我找不到任何具体的例子来说明如何用AMQP实现它。

额外信息:SpringBoot应用程序,使用Spring amqp到RabbitMQ。

提前谢谢

共有1个答案

梅跃
2023-03-14

您可以停止并启动消息侦听器容器。

如果使用离散容器,则可以停止/启动容器bean。

如果您使用的是@RabbitListener,请在RabbitListenerEndpoint注册表bean中提供id属性和连线。

然后注册表。getMessageListenerContainer(myId)。停止()

 类似资料:
  • 这就是事情。 我正在使用PHP AMQP从Rabbitmq读取结果队列,以便处理发送的每封电子邮件上的重要信息。完成后,我需要将该消息删除或标记为已写入,以便下次读取队列时,不会得到已处理的消息。 由于Rabbitmq服务器每小时发送超过10.000封电子邮件,每次我读取队列以处理结果发送时,脚本至少可以运行5分钟,以便处理队列中的所有消息,因此在完成后,在这5分钟内会发送数百条新消息。这使得我无

  • 我们正在尝试用nodejs、rabbitmq和MongoDB构建一个聊天应用程序。为了更快地传递消息,我们正在使用rabbitmq。因为我对这个概念是新的,如果有人可以的话,请帮我一下。我正在使用node amqp模块连接到rabbitmq服务器(https://www.npmjs.org/package/amqp)。 我声明如下所示的交换: var amqp=require('amqp');va

  • 在谷歌搜索了几天之后,我相信我完全迷路了。我想实现一种优先级队列,它大约有3个队列: 高优先级队列(每日),需要先处理 中等优先级队列(每周),如果队列#1中没有项目,将进行处理。(此队列中的ok消息根本不处理) 低优先级队列(每月),如果队列#1中没有项目,将进行处理 最初,我有以下流程,让消费者使用所有三个队列中的消息,并检查队列#1、#2和#3中是否有任何项目。然后我意识到这是错误的,因为:

  • 我正试图根据这里提到的博客演示RabbitMQ信用流机制的用法:https://www.rabbitmq.com/blog/2015/10/06/new-credit-flow-settings-on-rabbitmq-3-5-5/ 作为演示的一部分,我想展示如果消费者无法处理消息,RabbitMQ将阻止发布者进一步发布消息。 在消费者方面,我将消息持久保存在数据库中。我已将RabbitMQ确认模

  • 介绍 支持在 imi 框架中使用 支持 AMQP 协议的消息队列,如:RabbitMQ 支持消息发布和消费 Github: https://github.com/imiphp/imi-amqp Composer 本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 composer.json 中加入下面的内容: { "require": { "imiphp

  • 我希望能够在Rabbit中移动队列之间的消息(手动)。 例如: 我对rabbitmq和amqp还是个新手,但一直找不到关于如何做到这一点的文档(如果可能的话)。 多谢了。