我正在开发Restful服务,我们将在数据库中插入/更新新记录。
由于REST使用HTTP进行通信,而且HTTP不可靠,我担心在连接失败时可能不会将请求发送到服务器。
我在链接中发现的一个建议是:“如果连接失败,请从客户端重试一次。”但我们无法控制客户端应用程序。
其他解决方案是实现诸如RabbitMQ/JMS这样的消息传递系统,以确保可靠性。
我还在下面的链接中发现,添加会话状态可以提高可靠性。我无法理解这是如何发生的,更重要的是,一个好的restful服务不是总是无状态的吗?
因此,我要总结我的问题:
发布于 2015-07-26 20:05:35
消息传递可以帮助您,只要您在收到插入或更新信息的命令时不执行任何处理,因为您需要立即将命令放入队列中。此解决方案通常会增加相当大的复杂性,因为您需要在处理完命令时异步通知客户端(它是成功的还是失败的?还是我没有把结果寄出去?)
会话管理?为了可靠?从未听说过:)。Restful服务通常是无状态的..。所以这里没有会议!
另一个选项(但取决于客户端如何与您集成)是允许客户端生成要存储/更新的项的if,在这种情况下,如果它们返回错误,但您已经成功地处理了命令,客户端可以重试,并且会发生相同的更新。您可以将其与版本控制结合起来,以防止过时的更新晚到。
https://stackoverflow.com/questions/31641309
复制相似问题