计划使用命名空间API为我们的GAE应用程序提供多租户支持,因此通过namespace API documentation建议命名空间API支持推送队列,但没有完全解释命名空间如何适用于推送队列。
理想情况下,我们想要的是在队列A中推送任务,并为每个命名空间分别处理它。也就是说,如果在带有namespace-X的queue-A中有100个任务在等待,而namespace-Y只有5个任务,那么namespace-Y的任务不应该等待在namespace-x中完成100个任务。
例如: -
队列名称 - queue-A
客户 - client-X
和client-Y
现在,client-X和client-Y正在推入队列A,命名空间名称分别为X
和Y
。所以我们对命名空间的期望是,如果client-X的queue-A中有很多工作日,那么不应该影响客户端-Y的任务处理速度。
这是否会在命名空间API中自动处理,因为我认为这是多租户应用程序中非常常见的情况,如果无法实现它的话?
我认为命名空间在任务调度逻辑中没有任何含义。从您提到的文档的任务队列示例中可以看到,只有在实际处理任务时,当调度逻辑已经完成时,才会恢复命名空间信息。
但这并不是太糟糕 - 为了正确操作,您的应用程序的扩展和队列配置通常应该设置为处理您期望的最大工作负载(在所有命名空间中组合),在这种情况下,一个特定租户对另一个特定租户的影响(如果有的话)应该无足轻重。