Я создал конечную точку POST в гибкой среде appengine (Java / Spring Boot). Он находится в том же проекте Google, что и подписки PubSub. Я проверил, доступна ли конечная точка POST из внешнего мира. Я могу отправлять данные на эту конечную точку с помощью Postman со своего локального ПК. Но мой контроллер не получает запросы от push-подписки.
Я пробовал простые URL-адреса конечных точек, такие как / push, а также рекомендуемые URL-адреса, такие как / _ah / push-handlers / push, но результаты те же.
Я вижу в журналах Stackdriver много сообщений:
{
metadata: {
projectId: "myproject"
serviceName: "appengine.googleapis.com"
zone: "us-central1-b"
labels: {…}
timestamp: "2016-12-06T19:17:51.922Z"
}
insertId: "1u1o1hqf77guah"
log: "appengine.googleapis.com/nginx.request"
structPayload: {
method: "POST"
latencySeconds: "0.000"
referer: "-"
host: "-"
user: "-"
code: "307"
remote: "130.211.3.227"
agent: "-"
path: "/push"
size: "180"
}
}
Но мой push-контроллер никогда не вызывается.
Когда я отправляю сообщение на этот URL-адрес из Postman, я получаю аналогичное перенаправление 307 (единственное отличие в агенте), а затем, когда мой контроллер отвечает, я вижу ответ 200:
{
metadata: {
projectId: "myproject"
serviceName: "appengine.googleapis.com"
zone: "us-central1-b"
labels: {…}
timestamp: "2016-12-06T19:10:14.226Z"
}
insertId: "1acos4zf74fb5r"
log: "appengine.googleapis.com/nginx.request"
structPayload: {
method: "POST"
latencySeconds: "0.035"
referer: "-"
host: "-"
user: "-"
code: "200"
remote: "130.211.0.196"
agent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
path: "/push"
size: "727"
}
}
Вот мой app.yaml
# [START appyaml]
runtime: java
env: flex
runtime_config:
jdk: openjdk8
manual_scaling:
instances: 1
handlers:
- url: /.*
script: this field is required, but ignored
secure: optional
# [END appyaml]
Что может быть не так?