代码之家  ›  专栏  ›  技术社区  ›  Micro

谷歌应用引擎推送任务-使用延迟任务而不是工作人员服务警告

  •  0
  • Micro  · 技术社区  · 6 年前

    有关于使用的警告 DeferredTask documentation 上面写着:

    警告:虽然deferredtask API是处理 序列化,您必须小心地控制序列化 传递给有效负载方法的对象的兼容性。小心控制 是必需的,因为未处理的对象仍保留在任务队列中, 即使在应用程序代码更新之后。基于过时的任务 当任务为 用应用程序的新版本解码。

    我不明白。“小心控制”是什么意思?有人能举一个写穷人的例子吗? DefeferredTask ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   stickfigure    6 年前

    Java序列化遵循某些需要注意的规则。默认情况下,对Java类的任何更改“中断”序列化;用旧类序列化的对象不能用新类反序列化。

    如果您声明 serialVersionUID 在类中(不要更改值),那么即使更改类,也允许反序列化。如果您习惯于在JSON中序列化到/从JSON中序列化,并在类中添加/删除字段,那么它将像您通常期望的那样做。也就是说,从类中删除的字段将忽略数据,添加的新字段将具有默认值。

    有些人讨厌Java序列化,有些人喜欢它。它很有用,并且在处理任务队列时非常方便。如果你总是声明 序列号 你可能会没事的…当您试图序列化数据时,大多数错误都会导致异常,您将很快发现这些错误。