Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在RabbitMQ中将消息传递给消费者_Java_Rabbitmq - Fatal编程技术网

Java 如何在RabbitMQ中将消息传递给消费者

Java 如何在RabbitMQ中将消息传递给消费者,java,rabbitmq,Java,Rabbitmq,我目前正在开发一个使用RabbitMQ消息代理的应用程序。我对消息传递的工作方式感到困惑,我已经查阅了他们的官方文件,但无法澄清我的担忧 假设我的应用程序可以从两个队列获取消息,对于队列A,生产者直接将消息推送到该队列,队列B通过交换获取消息。我的问题是,如果同时有来自队列A和队列B的消息发送给消费者,消费者将如何消费这些消息?按顺序或通过创建多个并行线程 如果我的主线程负责读取消息,那么让主线程进入睡眠状态会停止消费队列中的消息吗?我的意思是,只要主线程处于睡眠状态,rabbitMQ就会停止向

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

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


如果我的主线程负责读取消息,那么让主线程进入睡眠状态会停止消费队列中的消息吗?我的意思是,只要主线程处于睡眠状态,rabbitMQ就会停止向使用者推送消息吗?到目前为止,我还没有使用使用者ACK,我正在尝试通过让主线程休眠所需的时间来停止消息消费。

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

  • 机制-在这种类型中,
    rabbitmq服务器
    负责在队列中有消息时将消息推送到使用者。可以使用
    基本\u qos
    配置控制发送给消费者的消息数量。信息可以自动确认,也可以由消费者确认
  • 机制-在这种类型中,消费者的工作是请求消息的
    rabbitmq服务器
    。一次只能请求一条消息

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

    RabbitMQ使用者只能使用来自单个队列的消息。RabbitMQ使用者使用来自队列的消息有两种机制

  • 机制-在这种类型中,
    rabbitmq服务器
    负责在队列中有消息时将消息推送到使用者。可以使用
    基本\u qos
    配置控制发送给消费者的消息数量。信息可以自动确认,也可以由消费者确认
  • 机制-在这种类型中,消费者的工作是请求消息的
    rabbitmq服务器
    。一次只能请求一条消息
  • 当使用者使用
    push
    机制进行连接时,使用者会运行IO循环,因此当您运行长时间运行的作业时,长时间运行的作业可能会阻碍使用者到rabbitmq服务器的心跳。处理此问题的一种方法是在单独的线程上运行长时间运行的作业