我正在开发 Restful 服务,我们将在数据库中插入/更新新记录。
由于REST使用HTTP进行通信,而HTTP并不可靠,我担心如果连接失败,请求可能无法发送到服务器。
我在 link 中找到的建议之一是“如果连接失败,只需从客户端重试。”但我们对客户端应用程序没有任何控制权。
其他解决方案是实现 RabbitMQ/JMS 等消息传递系统以确保可靠性。
我还在下面发现了link添加 session 状态可以提高可靠性。我无法理解这是如何发生的,更重要的是,良好的休息服务不总是无状态的吗?
总结一下我的问题:
- 为了实现可靠性,消息传递系统是最好的方法吗?
- session 管理如何帮助我实现可靠性?
最佳答案
消息传递可以提供帮助,只要您在收到插入或更新信息的命令时不进行任何处理,因为您需要立即将命令放入队列中。此解决方案通常会增加相当多的复杂性,因为您需要在完成命令处理后异步通知客户端(它是成功还是失败?...或者我是否未能发送结果?)。
session 管理?为了可靠性?从来没有听说过 :)。 Restful 服务通常是无状态的......所以这里没有 session !
另一个选项(但取决于您的客户端如何与您集成)是允许您的客户端生成您要存储/更新的项目的 ID,在这种情况下,如果他们返回错误,但您有成功处理命令,客户端可以重试,并且会发生相同的更新。您可以将其与版本控制配对,以防止过时的更新迟到。
关于java - 安心 服务 可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641309/