使用长轮询检索实时通知时是否可能丢失事件?

时间:2016-03-07 10:23:43

标签: notifications real-time cumulocity

订阅实时通知时,我会进行正常的握手,订阅,连接流程。 一旦连接返回事件,我重新连接并等待下一个响应返回。我的问题是: 如果第一个响应和下一个重新连接生成了事件,它们是否会丢失?

作为示例:一个同步应用程序在返回后处理返回的响应数据并且仅在数据处理完成后重新连接,这可能导致响应和下一次重新连接之间的显着延迟。在该延迟期间生成的累积事件是否在特定客户端ID的实时队列中缓冲,还是刚丢失?

另一个可能的例子是当客户端ID不再有效时(这似乎每天午夜发生),我必须重新订阅,导致一段时间没有人订阅。

1 个答案:

答案 0 :(得分:0)

握手连接到服务器端队列时收到的客户端ID。该队列会保留在下次连接之前无法接收的所有通知。它在您重新连接时提供它们。 (尝试使用Postman:在连接返回后,发送一些事件,然后再次连接。您会注意到您将立即获得所有事件。)

但是,正如您所注意到的,队列不会永远保留。如果您无法在两小时内重新连接(我相信),则会丢弃队列以阻止服务器资源。这是你注意到的。在这种情况下,您需要查询数据库以确定任何错过的事件(例如,从设备轮询待处理状态中的任何操作)。