簡體   English   中英

Java Spring RabbitMQ使隊列等待另一個

[英]java spring rabbitmq make a queue wait for another

我有一個Java Spring應用程序和Rabbitmq服務器。 我有兩個隊列。 第一個檢查A是否在數據庫中。 第二個將A保存到db。 我的意思是聽眾。 但是,如果我用相同的A發送許多請求,則第一個隊列偵聽器將嘗試在數據庫中檢查A,甚至在第二個偵聽器將其保存到DB之前。 如何同步兩個隊列? 因此,第一個偵聽器應該知道第二個偵聽器已經將該A保存到DB,然后第一個偵聽器應該在DB中進行檢查。 因此,如果我發送1000個A的請求,則第一個偵聽器將檢查A,沒有A,然后將其發送給第二個偵聽器,它將保存A,但是在第二次迭代中,第一個偵聽器將再次檢查A,但是第二個偵聽器可能無法完成這是工作。 第一個應該等待。 怎么解決呢?

使用線程,也許帶鎖。
第一個線程將隊列A中的元素移出隊列,然后將其傳遞給另一個線程,該線程將鎖定您的DB,檢查A是否在DB中,如果不是-將其寫入DB,解鎖DB,並接受下一個傳遞的元素。 與隊列B相同。
只需在檢查和寫入數據庫之前將其鎖定,然后在寫入數據庫之后將其解鎖。

我沒有找到任何解決方案,但是能夠通過使用具有不同傳播級別的java sql事務來做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM