如何从google pubsub推送到在谷歌应用引擎上运行的servlet?

时间:2016-05-18 06:55:06

标签: google-app-engine google-cloud-pubsub

我正在尝试配置google pubsub以将消息推送到在谷歌应用引擎上运行的servlet。

我可以发布到该主题。我知道这是有效的,因为我可以使用gcloud通过pull订阅检索:

gcloud alpha pubsub subscriptions pull projects/my-project/subscriptions/my-subscription

我也可以从我的网络浏览器调用app引擎上的servlet。但由于某种原因,我似乎无法说服pubsub在应该的时候调用servlet。

我相信我已经正确配置了servlet 这是我的web.xml文件的相关部分:

<servlet>
    <servlet-name>dataExtracted</servlet-name>
    <servlet-class>com.alpine.servlets.CatchEventDataExtractedServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dataExtracted</servlet-name>
    <url-pattern>/_ah/push-handlers/dataExtracted</url-pattern>
</servlet-mapping>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>push-handlers</web-resource-name>
        <url-pattern>/_ah/push-handlers/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

我调试有困难,因为我似乎无法访问任何可能指示错误来源的日志记录数据。消息刚刚消失在以太网中。

pubsub主题和订阅与应用程序引擎实例位于同一项目中。

Subscriber Guide”中有一点让我感到困惑的是这句话:

  

目前唯一支持的端点是可以使用的HTTPS服务器   接受Webhook交付。

我不确定“Webhook交付”究竟是什么意思。

1 个答案:

答案 0 :(得分:1)

虽然没有可用于pubsub的日志,但日志可用于应用引擎。

在我的特定情况下,当pubsub反复尝试访问不存在的资源时,我收到405错误。

事实证明我已经实现了doGet()而不是doPost(),因此我的servlet无法从pubsub接收推送。