JavaSpringRabbitMQ使队列等待另一个队列

JavaSpringRabbitMQ使队列等待另一个队列,java,spring,rabbitmq,Java,Spring,Rabbitmq,我有一个JavaSpring应用程序和rabbitmq服务器。我排了两个队。第一个检查A是否以DB为单位。第二个将一个数据保存到db。我是说听众。但是,如果我用相同的A发送多个请求,第一个队列侦听器将尝试在DB中检查A,甚至在第二个侦听器将A保存到DB之前。如何同步两个队列?因此,第一个侦听器应该知道第二个侦听器已经将它保存到数据库中,然后第一个侦听器应该在数据库中检查它。因此,如果我发送1000个A请求,第一个侦听器检查A,没有A,然后发送给第二个侦听器,它保存了A,但是在第二次迭代中,第一个

我有一个JavaSpring应用程序和rabbitmq服务器。我排了两个队。第一个检查A是否以DB为单位。第二个将一个数据保存到db。我是说听众。但是,如果我用相同的A发送多个请求,第一个队列侦听器将尝试在DB中检查A,甚至在第二个侦听器将A保存到DB之前。如何同步两个队列?因此,第一个侦听器应该知道第二个侦听器已经将它保存到数据库中,然后第一个侦听器应该在数据库中检查它。因此,如果我发送1000个A请求,第一个侦听器检查A,没有A,然后发送给第二个侦听器,它保存了A,但是在第二次迭代中,第一个侦听器再次检查A,但是第二个侦听器可能没有完成它的工作。第一个应该等待。如何解决此问题?

使用线程,可能带有锁。
第一个线程从队列A中取出元素,并将其传递给另一个线程,该线程锁定您的DB,检查A是否在DB中,如果不在,则将其写入DB,解锁DB,并接受下一个传递的元素。与队列B相同。

只需在检查和写入数据库之前锁定数据库,然后在写入数据库之后解锁即可

我没有找到任何解决方案,但可以通过使用不同传播级别的java sql事务来实现。

谢谢,但不幸的是,这种方法对我不起作用-我有5个虚拟服务器,每个服务器都在与兔子消费者一起运行我的java应用程序,所以线程解决方案现在可以工作了——我们不知道现在哪个节点正在处理请求。我以为我只能用兔子做某事。但似乎这是不可能的,如果在签入db之前先检查队列大小会怎么样?