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

googleappengine中队列的“bucket size”是什么意思?

  •  21
  • Gopi  · 技术社区  · 14 年前

    谷歌应用引擎 task queues 配置为(示例)

      <queue>
        <name>mail-queue</name>
        <rate>5/m</rate>
        <bucket-size>10</bucket-size>
      </queue>
    

    将其指定为10是否意味着如果一瞬间有100个任务排队,那么其中只有10个任务将被放入队列,其余的任务将被忽略?

    1 回复  |  直到 14 年前
        1
  •  34
  •   Community CDub    4 年前

    桶的大小是完美的描述 here :

    限制队列处理的突发性,即更高的bucket大小允许队列的执行率出现更大的峰值。例如,考虑一个速率为5/s、bucket大小为10的队列。如果该队列在一段时间内处于非活动状态(允许其“令牌桶”填满),并且突然有20个任务进入队列,则允许它立即执行10个任务。但是在接下来的第二秒内,由于令牌桶已耗尽,并且正在以指定的5/s速率重新填充,因此只能再执行5个任务。

    如果没有为队列指定bucket大小,则默认值为5。

    对于您的情况,这意味着如果队列中有100条消息,那么只有10条消息直接被执行,每过一分钟就有5条消息被执行。您不会丢失任何消息,但如果您的bucket大小和速率太低,它们会排队。