我正在构建支持短信的应用,允许用户与外部联系人进行通信。当收到的消息到达时,我将它们保存到我的数据库中,以便它们可以显示在应用程序中。
在测试中,所有内容都适用于一次性邮件,但我遇到的邮件超过160个字符时遇到问题,这些邮件实际上已分解为多条邮件。
当收到的消息通过短信进来时,我正在检查我们是否在过去的几秒钟内收到了该号码的消息。如果有,我会附加到我的数据库中的现有记录,而不是保存新记录。
// First message arrives:
record == "This is the first message."
// Second message arrives:
record == "This is the first message. This is the second message."
我的问题是,有时这两条消息的到达速度非常快,以至于第一条记录尚未完成保存。当第二个进程查询现有记录时,它找不到一个并创建一个新记录。
// First message arrives:
record1 == "This is the first message."
// Second message arrives, first isn't saved yet:
record1 == "This is the first message."
record2 == "This is the second message."
如果出现以下情况,当有包含三个或更多细分的消息时,这会产生特别糟糕的用户体验:
// First message arrives:
record1 == "This is the first message."
// Second message arrives, first isn't saved yet.
record1 == "This is the first message."
record2 == "This is the second message."
// Third message arrives, first has now been saved.
record1 == "This is the first message. This is the third message."
record2 == "This is the second message."
如果不放弃重新组合这些消息的计划,我该如何让消息以正确的顺序显示?
* 注意:* 理想情况下,我想知道保存邮件时是否是第一条(新)邮件或后续邮件。接收新消息会触发向用户发送电子邮件通知,但如果他们收到一条长消息,我不想发送多个通知。