我正在寻找一种方法来批处理我的 APN 有效负载并使用 JavaPNS 发送它们。GAE 不允许使用 JavaPNS 队列类(真可惜——我喜欢它!)。抛出异常(由于 GAE 中线程处理方式的限制,这是预期的):
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:375)
at java.security.AccessController.checkPermission(AccessController.java:565)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:56)
at com.google.apphosting.runtime.security.CustomSecurityManager.checkAccess(CustomSecurityManager.java:131)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
at java.lang.ThreadGroup.checkParentAccess(ThreadGroup.java:135)
at java.lang.ThreadGroup.<init>(ThreadGroup.java:117)
at java.lang.ThreadGroup.<init>(ThreadGroup.java:96)
at javapns.notification.transmission.NotificationThreads.<init>(NotificationThreads.java:150)
at javapns.Push.queue(Push.java:234)
...
那么我的选择是什么?TaskQueue 和拉取队列听起来很有希望,但这需要后端应用程序类型,这使得它更加昂贵。是否可以在基于 GAE servlet 的应用程序中创建多个生产者、一个消费者模型?