【问题标题】:Guarding against missed messages in AppEngine Channel API在 AppEngine Channel API 中防止丢失消息
【发布时间】:2012-01-23 06:55:42
【问题描述】:

在 AppEngine Channel API 中,频道会在 2 小时后自动关闭。我们通过在 onError 事件中重新加入频道来处理这个问题。

如果在频道重新连接时发送消息,是否有可能错过消息?

我们的场景:我们有一个预约安排系统,通过 API 在其他地方预约预约。我们使用该频道在日程安排上显示新的约会。但我担心如果在频道关闭并重新连接期间预订某些约会可能会错过。 Channel API 是否可以防止这种情况发生?

【问题讨论】:

    标签: google-app-engine channel-api


    【解决方案1】:

    一点背景知识:Channel API 中的“客户端 ID”用于创建临时 XMPP 端点。给定的客户端 ID 将始终映射到相同的瞬态端点。因此,当您使用令牌重新连接到使用相同客户端 ID 创建的通道时,您将重新连接到同一个端点。因此,您可能会看到客户端在重新创建通道之前收到消息的行为。但是没有任何保证,当消息被发送到没有侦听客户端的通道时,我们不会主动排队。

    在您的情况下,您能否在返回新令牌的同一响应中返回一个最新的约会列表?

    【讨论】:

    • 是的,我们计划这样做。感谢您的信息。
    【解决方案2】:

    您不是在“重新连接”频道,而是在创建一个全新的频道 - 所以是的,消息可能会丢失。但是,如果您尝试向已关闭的频道发送消息,您应该会遇到异常。

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多