Служба обмена сообщениями GAE - PullRequest
1 голос
/ 28 марта 2010

Допустим, я хочу, чтобы мой корпоративный сервер связывался с Google App Engine и наоборот. Я знаю, что GAE не поддерживает JMS, RMI и т. Д. Какая лучшая альтернатива для этого вида связи? Использовать очередь задач? (Я думаю, что HTTP get() не подходит для такого рода общения).

И мой корпоративный сервер, и приложение GAE используют Spring Framework.

Ответы [ 3 ]

2 голосов
/ 28 марта 2010

XMPP - это мощный и гибкий протокол обмена сообщениями, а в этой статье показано, как выполнить его на стороне GAE как в Java, так и в Python. Для реализаций XMPP (в Java и других) вне GAE, см. этот вопрос SO .

Для доступа из GAE ко многим громоздким защищенным данным, которые находятся за пределами корпоративного брандмауэра, Google рекомендует использовать Secure Data Connector (я специально указываю на URL-адрес учебника по Java для SDC с GAE ).

1 голос
/ 29 марта 2010

Используйте любой из нескольких протоколов RPC на основе HTTP: REST, JSONRPC, SOAP и т. Д.

Вы говорите: «Я думаю, что http get () не подходит для такого рода общения» - почему бы и нет?

0 голосов
/ 07 апреля 2019

Да, очередь задач . Он делает то же, что и 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("/");
  }
}
...