[英]Android: Best practice to use AsyncTask to load internet data periodly and retry it when fail to load
[英]Java: best practice to update data online when internet can be interrupted
在這種情況下,有用的模式是假定默認情況下發送數據是異步的。 收集后的數據將存儲在某個中間結構中,並等待適當的時間發送。 我認為該隊列可能有用,因為它可以與數據庫一起后端,並防止在發送服務器故障的情況下丟失數據。 單獨的線程(例如,作業)檢查隊列中的數據,如果存在,則讀取它們並嘗試發送。 如果正確執行了發送,則數據將從隊列中刪除。 如果發生故障,數據將保留在隊列中,並嘗試下一次發送它們。
當您要向事務中的非事務外部系統發送消息並且需要保證數據將盡快傳輸到外部系統而不會丟失時,這是典型的情況。
我想到了2個解決方案,也許第二個更適合您的體系結構。
用例1)
您可以將郵件隊列+重新發送限制設置與死信模式一起使用。 在這種情況下,您需要有一台應用服務器。
在這里,您可以閱讀有關死信模式的詳細信息。
本文檔說明了重新交付限制如何在Weblogic服務器上工作。
用例2)
您可以在destop應用程序的數據庫中創建接口表。 然后將原始數據插入數據庫,並將新記錄也插入接口表(所有記錄都在同一事務中)。 您想要發布的數據也需要插入接口表中。 在接口表中新記錄的狀態位可以“ 到達 ”。 然后在桌面應用程序中創建一個獨立的計時器,該計時器會定期搜索狀態為“已收到 ”的接口表中的記錄。 此計時器控制的過程將嘗試將數據發布到Web服務。 如果HTTP響應為200,則將記錄的狀態更新為“ SENT ”。
靴子可以像魅力一樣工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.