使用API将事件插入Google日历时,有没有办法避免竞争条件?我有一个实验性的应用程序,需要将事件插入用户的日历。但是,用户不应该在特定时间双重预订。
保证这类事情的唯一真正方法是Google提供方法。其他解决方案容易出现竞争条件(例如,用户在我的应用程序无知时更新它的其他应用程序)。据我所知,选项可以选择:
重要提示:不支持对条件修改 插入操作。相反,如果你被允许,可以保证 要提供资源ID,那么操作只有在没有时才会成功 现有条目具有该ID。
因此,如果我提供与日历etag的if-match并尝试插入,则无论etag是否正确,它总是会失败。
在即将插入事件时使用“观察”一段时间(https://developers.google.com/google-apps/calendar/v3/reference/events/watch)。但是,由于需要时间通知,此解决方案容易出现竞争条件。在我的应用程序收到更新通知时插入一个用户是有问题的。
定期将整个日历与服务器同步,并将真实来源视为同步版本并避免双重预订。不太理想,因为添加的新事件不会足够快地同步,但最有可能发挥作用。
还会想到其他什么解决方案?我认为#3最适合保证数据的一致性和完整性,以避免双重预订。
答案 0 :(得分:0)
我在this blog上找到了解决此问题的解决方案,该解决方案表明您将使用Calendar Resource API代替Google日历。我认为本指南正是您所需要的。
与常规日历不同,资源:
- 不允许冲突
- 可以在您的Google Apps域中的所有人之间共享
- 可以邀请(一次多个)参加活动,就像一个人一样
- 他们与每个人共享可用性的能力使得资源非常适合管理房间时间表。特别是在共同的工作中 环境就像你的办公室。
仅供参考:本指南假设您已拥有Google Apps。目前只 付费帐户可以访问资源日历。如果你是 在使用个人Gmail帐户或使用个人Gmail帐户时,此过程不会 很有意义。