RabbitMQ中的消息是如何传递给消费者的?

问题描述 投票:0回答:1

我目前正在开发一个使用 RabbitMQ Message broker 的应用程序。我对消息传递的工作方式有一个困惑,我已经查阅了他们的官方文档,但无法澄清我的疑虑。

假设我的应用程序可以从两个队列中获取消息,对于队列 A,生产者直接将消息推送到该队列,而队列 B 通过交换获取消息。我的问题是,如果有消息同时从队列A和队列B传到消费者那里,消费者将如何消费这些消息?按顺序还是通过创建多个并行线程?

如果我的主线程负责读取消息,那么让主线程进入睡眠状态会不会停止消耗队列中的消息?我的意思是,只要主线程是睡眠,rabbitMQ会不会停止向消费者推送消息?我现在没有使用消费者的acks,我想看看是否可以通过让主线程进入睡眠状态一段时间来停止消息的消耗。

java rabbitmq
1个回答
0
投票

RabbitMQ消费者只能从单个队列中消费消息。RabbitMQ 消费者从队列中消费消息有两种机制

  1. 推动 机制----在这种类型中, rabbitmq-server 负责将消息推送给消费者,只要队列中有消息。向消费者发送消息的数量可以通过使用 basic_qos 配置。消息可以自动确认,也可以由消费者确认。
  2. 机制--在这种类型中,消费者的工作是请求提供以下信息 rabbitmq-server 的信息。一次只能请求一条信息。

当消费者使用 push 机制,消费者运行一个IO循环,所以当你运行一个长期运行的作业时,长期运行的作业有可能阻碍消费者对rabbitmq服务器的心跳。处理这个问题的一个方法是在一个单独的线程上运行长期运行的作业。

© www.soinside.com 2019 - 2024. All rights reserved.