1

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

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

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

我还可以从我的 Web 浏览器调用应用程序引擎上的 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 主题和订阅与应用引擎实例位于同一个项目中。

“订阅者指南”中让我有点困惑的一件事是这样的声明:

目前唯一受支持的端点是可以接受 Webhook 传递的 HTTPS 服务器。

我不确定“Webhook 交付”到底是什么意思。

4

1 回答 1

1

尽管 pubsub 没有可用的日志,但应用引擎可以使用日志。

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

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

于 2016-05-19T18:32:23.373 回答