GAE消息服务

时间:2010-03-28 15:30:36

标签: java spring google-app-engine jms rmi

假设我希望我的公司服务器与Google App Engine通信,反之亦然。我知道GAE不支持JMS,RMI等。这种通信的最佳选择是什么?使用任务队列? (我认为HTTP get()不适合这种通信。)

我的公司服务器和GAE应用程序都使用Spring框架。

3 个答案:

答案 0 :(得分:2)

XMPP是一种功能强大且灵活的消息传递协议,this article显示了如何在Java和Python中执行GAE方面。对于GAE之外的XMPP实现(在Java和其他实现中),请参阅this SO question

为了从GAE访问公司防火墙后面的大量安全数据,Google建议实施Secure Data Connector(我指的是使用GAE的SDC Java教程的URL)。

答案 1 :(得分:1)

使用任何基于HTTP的RPC协议:REST,JSONRPC,SOAP等。

你说“我认为http get()不适合这种沟通” - 为什么不呢?

答案 2 :(得分:0)

是的,task queue。它和JMS一样。

您还可以使用Google Cloud Pub/Sub或任何其他类似的服务。

您要做的基本上是配置一个WebServlet并实现HttpServlet doPost方法。特别是针对Google Cloud Pub / Subm,您应该使用网址格式/_ah/push-handlers

下面是来自AppEngine文档的示例:

// The Enqueue servlet should be mapped to the "/enqueue" URL.
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "TaskEnque",
    description = "taskqueue: Enqueue a job with a key",
    urlPatterns = "/taskqueues/enqueue"
)
public class Enqueue extends HttpServlet {

  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    String key = request.getParameter("key");

    // Add the task to the default queue.
    Queue queue = QueueFactory.getDefaultQueue();
    queue.add(TaskOptions.Builder.withUrl("/worker").param("key", key));

    response.sendRedirect("/");
  }
}