本地GAE java dev服务器

时间:2016-07-30 14:26:13

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

我的团队和我非常希望在我们的应用程序中包含Google Pub / Sub,因为它将解决一些耦合问题。 我们遇到的问题是如何与java appengine dev服务器一起进行本地集成测试。

到目前为止我做了什么:

  1. 启动pub子模拟器并设置PUBSUB_EMULATOR_HOST 环境变量
  2. 在java dev服务器中启动我们的应用程序 它创建主题和订阅,然后发送一些消息 主题。
  3. 我假设我做错了,因为:

    • 在云中创建的主题和订阅(当然它们应该在pubsub模拟器中创建?)
    • 消息被推送,我们收到消息ID但没有到达端点或在云或模拟器中报告错误。

    由此我很确定开发服务器没有接收到模拟器。

    我对测试策略也有一些更深层次的问题。本地集成测试在当今时代是否真的可行,越来越多的服务成为云计算的一部分。我们是否应该更多地关注针对云实例本身运行的集成测试套件?如果是这样,在部署到云测试环境之前,如何确保开发人员对其代码有信心,并且这不会显着增加反馈循环?

    更新

    使用Google Java API客户端PubSub构建器类,我能够从本地配置中注入一个url(localhost:8010),现在可以让我成功发布到本地模拟器。

    Pubsub client = new Pubsub.Builder(httpTransport, jsonFactory, initializer)
    .setApplicationName(getProjectId())
    .setRootUrl(rootUrl).build();
    

    我强制使用端口来简化团队其他部分的设置,而不是依赖于动态变化的端口。

    gcloud beta emulators pubsub start --host-port localhost:8010
    

    现在,在模拟器上成功创建了主题,订阅和消息。不幸的是,我还没有将消息推送到注册的端点。

    更新2

    gcloud版本120.0.0似乎改进了一些东西,但我现在收到以下错误:

    {
      "code" : 400,
      "message" : "Payload isn't valid for request.",
      "status" : "INVALID_ARGUMENT"
    }
    

1 个答案:

答案 0 :(得分:0)

gcloud实用程序的最新更新是否已修复本地pubsub服务器。此问题已解决此问题:https://code.google.com/p/cloud-pubsub/issues/detail?id=41