![](/img/trans.png)
[英]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.