【问题标题】:Consolidating Results of Tasks running on GAE (Java) Push Queue合并在 GAE (Java) 推送队列上运行的任务的结果
【发布时间】:2014-02-12 06:35:19
【问题描述】:

我想将任务放到我的 GAE java 应用程序中的推送队列中,以审核我的用户的状态,每个任务 1 个用户。我正在努力寻找一个好的解决方案,以便在每项任务中以安全、有效的方式跟踪和整合审计结果。

目前我所做的是使用在其构造函数中具有一个参数的延迟任务:代表我要审核的用户的实体的键的字符串表示形式。

我需要为每个用户保留的数据类型是是/否,例如他们是否处于活动状态,他们与其他服务的连接是否已撤销/未撤销等。当我整合时,我要做的就是将所有内容加起来每个问题的是和否,例如我有 1000 个活跃用户,200 个非活跃用户,等等。

我考虑过的方法(请原谅天真...)是:

  • 每个任务都有自己的实体,然后我会检查它以合并所有任务的结果
    • 优点:分布式环境中的线程安全和安全
    • 缺点:相对昂贵(即因为我必须写很多行,然后再删除它们),而且很麻烦,因为我必须对实体进行后处理以合并每行中的数据李>
  • 我可以在每个延迟任务中获取某个单例类的实例,并使用它来保存和合并数据,然后让它稍后保留其数据
    • 优点:便宜(不必写入/删除额外数据),整洁,因为单个对象完成所有工作,可以使线程安全
    • 缺点:在 GAE 上,我不能(很容易?)依赖单例真的是单例,因为它是分布式的,所以在实践中,我最终可能会将数据合并到两个或更多类似的“单例”对象中
  • 我怀疑我可以将数据写入一些预定义的上下文对象(servlet 上下文?)或内存缓存?
    • 优点:便宜、快速、可能很简单?
    • 缺点:memcache 数据可能会被覆盖 - 这不安全;不确定 servlet 上下文

底线是所有这些都是我编造的方法,我确信必须有一个标准的方法/模式来做这种事情......但我一直没能找到它。

请给点建议...?谢谢!

【问题讨论】:

    标签: java google-app-engine task-queue


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2018-10-15
    • 2013-02-19
    • 2017-10-04
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多