我有2个应用程序:
我的桌面应用程序中有一些数据必须与Web应用程序中的数据保持一致。
因此,基本上,我从桌面应用向网络应用发送了POST
请求,以更新在线数据。
但是问题是,当我发送请求时,互联网不能总是可用,同时我不能阻止用户更新桌面数据
到目前为止,这是我要确保互联网可用时确保数据同步的目的。
我的方向正确吗?
如果没有,我希望你们能以正确的方式使我以专业的方式实现我的目标。
关于此类主题的任何链接将不胜感激。
答案 0 :(得分:1)
在这种情况下,有用的模式是假定默认情况下发送数据是异步的。收集后的数据将存储在某个中间结构中,并等待适当的时间发送。我认为该队列可能有用,因为它可以与数据库一起后端,并防止在发送服务器故障的情况下丢失数据。单独的线程(例如作业)检查队列中的数据,如果存在,则读取它们并尝试发送。如果正确执行了发送,则数据将从队列中删除。如果发生故障,数据将保留在队列中,并尝试下一次发送它们。
答案 1 :(得分:0)
当您想在事务中向非事务性外部系统发送消息,并且需要保证数据将尽快传输到外部系统而不会丢失时,这是一种典型情况。
我想到了2种解决方案,也许第二种更适合您的体系结构。
用例1)
您可以将邮件队列+重新发送限制设置与死信模式一起使用。在这种情况下,您需要有一台应用服务器。
Here,您可以阅读有关死信模式的详细信息。
This文档介绍了重新交付限制在Weblogic服务器上的工作方式。
用例2)
您可以在destop应用程序的数据库中创建接口表。然后将原始数据插入数据库,并将新记录也插入接口表(所有记录都在同一事务中)。您想要发布的数据也需要插入接口表中。接口表中新记录的状态标志可以是“ ARRIVED ”。然后在您的桌面应用中创建一个独立的计时器,该计时器会定期在界面表中搜索状态为“ ARRIVED ”的记录。此计时器控制的过程将尝试将数据发布到Web服务。如果HTTP响应为200,则将记录的状态更新为“ SENT ”。
引导可以像护身符一样工作。
答案 2 :(得分:0)