1

我在appengine靈活環境(Java/Spring Boot)中創建了POST端點。它與PubSub訂閱位於同一Google項目中。 我檢查了這個POST端點可以從外部訪問。我可以使用本地PC上的Postman將數據發佈到此端點。 但我的控制器沒有得到推送訂閱的請求。在appengine靈活環境中無法接收PubSub推送消息

我嘗試了簡單的終端網址/推,也推薦的網址/ _ah/push-handlers /推,但結果是相同的。

我可以在爲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" 
    } 
} 

但我推控制器永遠不會被調用。

當我發佈從郵差這個URL,我得到類似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" 
    } 
} 

這裏是我的應用程序.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] 

什麼可能是錯誤的?

回答

1

我也遇到了同樣的問題。 我在GAE flex上有一個scala akka-http應用程序。 我認爲這是一個flex的bug,因爲我在編輯GAE標準(golang)上的push-endpoint時獲得了成功。