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

RabbitMQ推迟接收

太叔永新
2023-03-14

在spring-AMQP中,有可能以某种方式推迟监听来自某个特定队列的消息吗?

在我的用例中,我有一个服务,它必须侦听两个RabbitMQ队列上的消息。第一个专用于此服务,第二个用于my service的多个html" target="_blank">实例(运行在不同的机器上)的负载平衡作业。

我的statup服务通过第一个队列接收配置并自我配置。只有在配置之后,才允许处理第二个队列中的“标准”作业--而不是在配置之前。

我怎样才能做到这一点呢?使用@RabbitListener(queues={queue1,queue2})立即开始监听。

我还查看了rabbitmq_delayed_message_exchange,但这不是我想要的,因为它延迟了消息的处理。我不想延迟处理(其他已经配置的使用者可以处理工作)。

谢谢你的帮助。

共有1个答案

姚嘉容
2023-03-14

@RabbitListener具有AutoStartup选项:

/**
 * Set to true or false, to override the default setting in the container factory.
 * @return true to auto start, false to not auto start.
 * @since 2.0
 */
String autoStartup() default "";

我想您最好有两个单独的@rabbitlistener:一个用于配置队列,另一个用于not-autostartup'ed。配置就绪后,您需要从RabbitListenerEndpointRegistry.getListenerContainer()中为第二个容器获取一个容器,并调用它的start()。您还可以在第二个@RabbitListener上配置ID:

/**
 * The unique identifier of the container managing for this endpoint.
 * <p>If none is specified an auto-generated one is provided.
 * @return the {@code id} for the container managing for this endpoint.
 * @see org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry#getListenerContainer(String)
 */
String id() default "";

有关更多信息,请参阅文档:https://docs.spring.io/spring-amqp/docs/2.1.7.release/reference/html/#async-annotation-driven

 类似资料:
  • 问题内容: 假设我有以下功能 如规范中所述: 每次执行“ defer”语句时,将照常评估调用的函数值和参数并重新保存,但不会调用实际函数。 显然,函数执行结束时将输出零。但是,如果我想打印出变量的最终值该怎么办? 我提出了以下解决方案: 所以我想知道是否有更好的方法来解决此问题。 问题答案: 如果defer有参数,则在defer语句的行对其进行评估;以下代码段对此进行了说明,其中defer将显示0

  • 问题内容: 是否有人使用过nodejs模块“ deferred”和“ mongoose”?我试图让deferred.promisify方法可以在猫鼬模型的函数上工作,以便我可以轻松地将它们链接起来,但是会遇到一些麻烦。具体来说,我想对和函数进行赋值处理,以便可以通过ObjectID链接查找另一个文档引用的一个文档。 这就是我所拥有的:https : //gist.github.com/332182

  • 我们正在使用Rabbitmq-server_3.5.7及其相应的延迟消息交换插件 到目前为止,我们一直在使用直接交换并控制客户端应用程序上的消息生成器的延迟(并跟踪当前队列中的消息数量)。 我们已经开始成功使用延迟交换,但我们想知道如何检查当前延迟的消息数量(这是等待路由到队列)。 兔子是否提供了一种知道这一点的方法?是否有任何其他方法可以访问此信息? 谢啦!

  • 我在vm上运行rabbitMQ服务器。我正在学习rabbitMQ java教程。它在vm上本地运行良好,但当尝试从主机发送时,我遇到了一个异常 以下是我正在使用的发送代码: 我可以ping服务器在192.168.198.100但我不能访问管理UI在192.168.198.100:15672/ 有人能帮我弄清楚这个问题出了什么问题吗?提前感谢。

  • 本文向大家介绍RabbitMQ 怎么实现延迟消息队列?相关面试题,主要包含被问及RabbitMQ 怎么实现延迟消息队列?时的应答技巧和注意事项,需要的朋友参考一下 延迟队列的实现有两种方式: 通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能; 使用 RabbitMQ-delayed-message-exchange 插件实现延迟功能。

  • 我有一个Kafka连接接收器记录从Kafka主题到S3。它在工作,但太慢了。Kafka主题每秒接收约30000条消息。连接接收器无法跟上。我已经尝试增加Kafka连接器的任务。最大值从1到3,这会创建更多任务,但这似乎无助于提高消息/秒的速度。我试着增加Kafka连接工人的CPU分配,这似乎也没有帮助。 我还能试什么?哪些指标有助于监控以进一步识别瓶颈? 更新:Kafka主题有5个分区。Kafka