當我創建一個新對象'Order'後,我想獲得它的生成ID並放到AMQP隊列中,以便工作人員可以用它來做其他事情。工作人員接受生成的ID(消息)並查找訂單,但抱怨沒有記錄存在,即使我剛剛創建了一個記錄。我試圖找出在將消息(生成的ID)放入隊列(我認爲這不是一個好主意)之前調用我的.persist()之後等待多久。有工人循環一遍又一遍,直到MySQL返回一個記錄(我不喜歡任何一個);或者在知道數據在mysql中安全後,找到可以將消息放入隊列的點(這聽起來最好)。我認爲它需要在任何@Transactional方法之外完成。在什麼時候我可以相信數據已經保存到mysql?
將要從mysql讀取數據的工作人員是不同服務器上不同系統的一部分。那麼,我什麼時候可以告訴工作人員數據是在mysql中,以便它可以開始執行其任務?
在@Transactional方法完成數據完成寫入mysql之後,我確實無法理解這一點。 感謝萬先進。
數據庫事務是一個相當廣泛的主題,但是您需要確保在您嘗試從另一個事務中讀取數據之前寫入數據的事務已完成。當然,除非您的事務隔離是'READ_UNCOMMITTED',但我們不要深入瞭解。 – Kayaman
一旦你提交了這個事務,你的所有操作都將被保證持久化,並且對於運行它們自己的事務的其他進程是可見的。除非您使用READ_UNCOMMITTED作爲事務隔離級別。 – Ralf
我的問題更多地是指從隊列中挑選訂單ID的工作人員完全是另一個系統的一部分 - 抱歉,我忘記提及我的問題。不適當更新。 – Dagron