我有一個方法在鎖定(ReentrantLock)這種方法發送一些消息到服務器,立即接收響應和創建/保存數據庫中的數據。 此響應具有發送消息的標識。客戶端有一個正在等待服務器報告的偵聽器(這個報告可以在數據發送到服務器之後返回),服務器也可以返回某種報告(帶有id和一些狀態),並且我需要將該報告(通過id)映射到該記錄的先前保存的記錄和更改狀態字段。不同線程之間的數據共享
問題是這個報告可以更快地返回(並且偵聽器會抓住它並嘗試處理),那麼來自第一個方法的消息被保存在數據庫中。 解決這個問題的方法是什麼?
我曾想過在數據庫中創建附加表並將消息中的數據保存在一個表中,並將數據從報告保存到其他表中。然後通過其他進程同步它們,但是也許可以創建一些緩衝區/隊列,其中消息ID將從第一個方法存儲,並且當我們接收到報告時,我們將檢查該緩衝區/隊列是否存在相應的消息ID,如果我們發現該消息編號,那麼報告監聽器將繼續它的工作?