我们的GAE应用程序使用了很多队列,我们添加了自定义队列,最初默认是这样:
<queue-entries>
<queue>
<name>default</name>
<rate>5/s</rate>
</queue>
</queue-entries>
在我们的案例中,我们添加了更多条目
您可以根据需要添加更多队列,但似乎Appscale无法获取添加的条目,因为我们收到此错误:
Mar 26 18:09:48 appscale-image0 #011at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Mar 26 18:09:48 appscale-image0 Caused by: java.lang.IllegalStateException: The specified queue is unknown : null
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:104)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.taskqueue.QueueImpl$2.wrap(QueueImpl.java:547)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.taskqueue.QueueImpl$2.wrap(QueueImpl.java:519)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.utils.FutureWrapper.wrapAndCache(FutureWrapper.java:53)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:90)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:86)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.taskqueue.QueueApiHelper.getInternal(QueueApiHelper.java:72)
Mar 26 18:09:48 appscale-image0 #011at com.google.appengine.api.taskqueue.QueueImpl.add(QueueImpl.java:411)
请注意,我们的应用程序正在使用GAE,我们没有修改我们在Appscale中部署的Java代码中的任何内容,所以我认为这是一个错误或缺少的功能?
答案 0 :(得分:1)
Appscale不应该自己接收更改,您需要部署更新的队列配置,就像在GAE上一样。
请注意,在某些情况下(例如多服务应用),所有服务共享的应用级配置(如队列配置)可能不会仅通过重新部署自动更新持有这些配置的服务。在这种情况下(以及一般的良好实践)所需的是使用专用命令来独立于任何特定服务的部署来部署每个这样的应用级配置。
来自Deploying the queue configuration file:
queue.xml
文件应位于WEB-INF
目录中 默认服务。部署队列配置文件而不另行更改 当前正在服务的版本,使用命令:
appcfg.sh update_queue <application directory>
将
<application directory>
替换为您的应用程序的路径 主目录。