GAE 消息服务

发布于 2024-08-26 16:43:31 字数 166 浏览 7 评论 0 原文

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

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

Let's say I want my corporate server to communicate with Google App Engine and vice versa. I know that GAE does not support JMS,RMI etc. What is the best alternative for this kind of communication? Use task queue? (I think HTTP get() is not suitable for this kind of communication).

Both my corporate server and GAE application use Spring framework.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疯到世界奔溃 2024-09-02 16:43:35

XMPP 是一种功能强大且灵活的消息传递协议,本文介绍了如何操作Java 和 Python 中的 GAE 方面。对于 GAE 之外的 XMPP 实现(使用 Java 和其他语言),请参阅这个 SO 问题< /a>.

要从 GAE 访问公司防火墙后面的大量大量安全数据,Google 建议实施 安全数据连接器(我特意指向带有 GAE 的 SDC 的 Java 教程的 URL)。

XMPP is a powerful and flexible messaging protocol, and this article shows how to do the GAE side of it in both Java and Python. For XMPP implementations (in Java and others) outside of GAE, see this SO question.

For accessing from GAE a lot of bulky secure data that lives behind your corporate firewall, Google recommends implementing the Secure Data Connector (I'm pointing specifically to the URL of the Java tutorial for SDC with GAE).

吹梦到西洲 2024-09-02 16:43:35

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

您说“我认为 http get() 不适合这种通信”——为什么不呢?

Use any of a number of HTTP based RPC protocols: REST, JSONRPC, SOAP, etc.

You say "I think http get() is not suitable for this kind of communication" - why not?

只有影子陪我不离不弃 2024-09-02 16:43:35

是的,任务队列。它的作用与 JMS 相同。

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

您要做的基本上是配置一个 WebServlet 并实现 HttpServlet doPost 方法。特别是对于 Google Cloud Pub/Subm,您应该使用 url 模式 /_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("/");
  }
}

Yes, task queue. It does the same that JMS does.

You can also use Google Cloud Pub/Sub or any other similar service.

What you going to do is basically configure a WebServlet and implement the HttpServlet doPost method. In specific for Google Cloud Pub/Subm you should use the url pattern /_ah/push-handlers

Here the example from the docs of AppEngine for the receiver:

// 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("/");
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文