Java 如何将任务排入任何事务之外的队列

Java 如何将任务排入任何事务之外的队列,java,google-app-engine,transactions,task-queue,Java,Google App Engine,Transactions,Task Queue,我想 启动Google appengine事务 创建任务并将其排入队列(任何事务之外) 通过提交或放弃事务来关闭事务 如何在Java事务之外执行#2 动机主要是为了避免5项任务的限制。一个选项可以是: 附加到事务中的单个任务数据有效负载。每个额外的数据块都适合自己的任务 在提交事务之前,使用聚合的任务负载将一个任务排队 执行一个事务性任务。它将数据有效负载分解为单独的新任务,您可以将其排队 执行每个enqueud任务 合适吗?(您需要验证事务性任务本身是否可以将非事务性任务排入队列。)您可以对以

我想

  • 启动Google appengine事务
  • 创建任务并将其排入队列(任何事务之外)
  • 通过提交或放弃事务来关闭事务
  • 如何在Java事务之外执行#2

    动机主要是为了避免5项任务的限制。

    一个选项可以是:

  • 附加到事务中的单个任务数据有效负载。每个额外的数据块都适合自己的任务
  • 在提交事务之前,使用聚合的任务负载将一个任务排队
  • 执行一个事务性任务。它将数据有效负载分解为单独的新任务,您可以将其排队
  • 执行每个enqueud任务

  • 合适吗?(您需要验证事务性任务本身是否可以将非事务性任务排入队列。)

    您可以对以下Queue.add方法变量使用null transaction参数

    add(Transaction txn, TaskOptions taskOptions)
    
    这在文章的顶部进行了解释。它将使添加任务独立于活动事务的成功或失败


    但是,如果即使事务失败也不关心将任务排入队列,则可以在事务内的列表中创建TaskOptions对象,然后在事务完成后在一次调用中将其排入队列。这样,您就不会因为添加到事务内部的队列而产生延迟成本。

    这是一个解决方法--我非常确定应该有一种方法来实际执行我想要的操作。很好,我看到可以传递null,但错过了顶部关于该操作的文档。