1

我想

  1. 启动 Google appengine 交易
  2. 创建任务并将其排入队列(在任何事务之外)
  3. 通过提交或丢弃来关闭事务

我如何在 Java 中的事务之外执行 #2?

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

4

2 回答 2

2

您可以对 Queue.add 方法的以下变体使用空事务参数。

add(Transaction txn, TaskOptions taskOptions)

这在队列接口文档的顶部进行了解释。它将使添加任务独立于活动事务的成功或失败。

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

于 2013-08-29T22:31:47.943 回答
0

一种选择可能是:

  1. 附加到事务中的单个任务数据有效负载。每一个额外的数据块都适合自己的任务。
  2. 在事务提交之前将一项任务与您的聚合任务有效负载排入队列。
  3. 执行一个事务性任务。它将数据有效负载分解为您排队的单独的新任务。
  4. 每个入队任务都会执行。

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

于 2013-08-29T09:18:08.120 回答