我正在尝试配置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交付”究竟是什么意思。
答案 0 :(得分:1)
虽然没有可用于pubsub的日志,但日志可用于应用引擎。
在我的特定情况下,当pubsub反复尝试访问不存在的资源时,我收到405错误。
事实证明我已经实现了doGet()而不是doPost(),因此我的servlet无法从pubsub接收推送。