Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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_Spring_Queue_Rabbitmq_Amqp - Fatal编程技术网

Java RabbitMQ获取未确认的消息

Java RabbitMQ获取未确认的消息,java,spring,queue,rabbitmq,amqp,Java,Spring,Queue,Rabbitmq,Amqp,我有一个RabbitMQ服务器,它有大约100个队列,每个队列中有大约100条消息。所有队列都有相同的交换密钥和单独的路由密钥。 我正在使用Spring的amqp框架与RabbitMQ服务器交互。我有多个应用程序使用同一个RabbitMQ服务器(即多个使用者) 我面临的问题是,对于某些特定的消费者来说 收到消息时,确认失败,即我可以在某些队列中看到一些未确认的消息。现在的问题是,如果我的应用程序甚至意外地收到了一条重复的(未确认的消息,即以前收到的消息)消息,它会抛出异常,这就是我开始得到的那些

我有一个RabbitMQ服务器,它有大约100个队列,每个队列中有大约100条消息。所有队列都有相同的交换密钥和单独的路由密钥。 我正在使用Spring的amqp框架与RabbitMQ服务器交互。我有多个应用程序使用同一个RabbitMQ服务器(即多个使用者)

我面临的问题是,对于某些特定的消费者来说 收到消息时,确认失败,即我可以在某些队列中看到一些未确认的消息。现在的问题是,如果我的应用程序甚至意外地收到了一条重复的(未确认的消息,即以前收到的消息)消息,它会抛出异常,这就是我开始得到的那些未确认消息

但我甚至不确定何时以及为什么会收到未确认(即重复)的消息,因为我不确定未确认消息的优先级。那么,你们能给出以下问题的解决方案吗

  • 即使在正确获取消息之后,为什么有时只有ack不成功
  • 即使第一个问题1没有解决方案,我应该如何配置我的应用程序,使其永远不会收到未确认(重复)的消息

    顺便说一句,从创作一开始就没有看到这种行为 对于应用程序,它最近开始以这种方式运行


  • 请看以下内容:

  • 在Rabbit中实现。(您可以选择使用zookeeper或etcd来实现此目的)
  • 当您收到一条消息时,它有一个标志
    redelivered
    ,该标志是在消息已被其他消费者消费,但由于某种原因返回队列时设置的。所以你可以简单地检查一下,如果已经设置好了,那么就删除消息