推送消息然后轮询结果

Push a message and then Poll for a result

我们有两个服务,一个接收消息,另一个告诉我们消息何时被处理。我正试图在加特林测试中涵盖这一点。这是我到目前为止所拥有的,但我正在为最后一点而苦苦挣扎..

scenario("push message and poll for result")
  .feed(feeder)
  .group("push and check: group") {
    exec(http("push")
      .put("/create")
      .check(status.is(200))
    )
      .asLongAs(session => !session.contains("messageProcessed")) {
        exec(http("poll")
          .get("/poll")
          .check(status.is(200), jsonPath("$.results[0].resultCount").saveAs("resultCount"))
      }

  }

我的问题是 resultCount 最初将为零,所以我想一直轮询直到它变为 != 0。发生这种情况时,我想我可以将 "messageProcessed" 设置为某个值,然后它就会退出循环.

有办法吗?感谢您的帮助。

这是我最后使用的解决方案

.asLongAs(session => getResultCount(session) == 0) {

并添加了这个方法:

def getResultCount(session: Session): Int = {
    session("resultCount").asOption[String].map(_.toInt).getOrElse(0)
  }