假设我希望我的公司服务器与Google App Engine通信,反之亦然。我知道GAE不支持JMS,RMI等。这种通信的最佳选择是什么?使用任务队列? (我认为HTTP get()
不适合这种通信)。
我的企业服务器和GAE应用程序都使用Spring框架。
XMPP是一种功能强大且灵活的消息传递协议,this article展示了如何在Java和Python中实现GAE方面。对于GAE之外的XMPP实现(在Java和其他实现中),请参阅this SO question。
为了从GAE访问公司防火墙后面的大量安全数据,Google建议实施Secure Data Connector(我指的是使用GAE的SDC Java教程的URL)。
使用任何基于HTTP的RPC协议:REST,JSONRPC,SOAP等。
你说“我认为http get()不适合这种沟通” - 为什么不呢?
是的,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("/");
}
}