gpt4 book ai didi

java - RabbitMQ 中消息如何传递给消费者

转载 作者:行者123 更新时间:2023-12-01 16:26:05 24 4
gpt4 key购买 nike

我目前正在开发一个使用 RabbitMQ 消息代理的应用程序。我对消息传递的工作原理感到困惑,我已经阅读了他们的官方文档,但无法澄清我的担忧。

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

如果我的主线程负责读取消息,那么让主线程进入休眠状态会停止消耗队列中的消息吗?我的意思是,只要主线程处于 sleep 状态,rabbitMQ 就会停止向消费者推送消息吗?我现在没有使用消费者确认,并试图看看是否可以通过使主线程进入 hibernate 状态一段所需的时间来停止消息消费。

最佳答案

RabbitMQ 消费者只能消费来自单个队列的消息。 RabbitMQ 消费者通过两种机制消费队列中的消息

  1. Push机制 - 在这种类型中,每当队列中有消息时,rabbitmq-server 就负责将消息推送给消费者。可以使用 basic_qos 配置来控制发送给消费者的消息数量。该消息可以自动确认,也可以由消费者确认。
  2. Pull机制 - 在这种类型中,消费者的工作是向rabbitmq-server请求消息。一次只能请求一条消息。

当消费者使用push机制连接时,消费者会运行一个IO循环,因此当您运行长时间运行的作业时,长时间运行的作业有可能会阻碍消费者心跳到rabbitmq服务器。处理此问题的一种方法是在单独的线程上运行长时间运行的作业。

关于java - RabbitMQ 中消息如何传递给消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62145295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com