GAE消息服务

问题描述 投票:1回答:3

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

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

java spring google-app-engine jms rmi
3个回答
2
投票

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

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


1
投票

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

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


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("/");
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.