RATPACK中的非阻滞处理程序代码无法正常工作



我正在尝试遵循此博客文章,该博客列表在Ratpack中演示了阻止处理程序,但我无法正常工作。我正在缺少背景的方法例外。

我的build.gradle文件如下来自此github目录

buildscript {
    repositories {
    maven { url "http://oss.jfrog.org/artifactory/repo" }
    jcenter()
  }
  dependencies {
    classpath 'io.ratpack:ratpack-gradle:0.9.4'
  }
}
apply plugin: "ratpack-groovy"
apply plugin: "idea"
apply plugin: "eclipse"
repositories {
  maven { url "http://oss.jfrog.org/artifactory/repo" }
  jcenter()
  maven { url "http://repo.springsource.org/repo" }
  maven { url "https://nexus.codehaus.org/content/repositories/snapshots/" }
}
dependencies {
  springloaded "org.springsource.loaded:springloaded:1.1.5.RELEASE"
  testCompile "org.spockframework:spock-core:0.7-groovy-2.0", {
      exclude module: "groovy-all"
  }
}
// The Groovy that rest-assured drags in via ratpack-groovy-test is toxic, prevent it from coming in
// This should be fixed upstream in Ratpack
configurations.testCompile.dependencies.find { it.name == "ratpack-groovy-test" }.exclude(group: "org.codehaus.groovy")

和处理程序代码如下。

import static ratpack.groovy.Groovy.ratpack
    ratpack {
        handlers {
            get("non-blocking") {
                background {
                    Thread.sleep(10000)
                }.then{
                    response.send()
                }
            }
        }
    }

我正在缺少背景的方法例外。

groovy.lang.MissingMethodException: No signature of method: nonBlocking.background() is applicable for argument types: (nonBlocking$_run_closure1$_closure2$_closure3$_closure4) values: [nonBlocking$_run_closure1$_closure2$_closure3$_closure4@497352d0]
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
    at 

background已被Blocking.get

替换

https://ratpack.io/manual/current/api/ratpack/exec/blocking.html#get-get-ratpack.func.fact.factory-factory-

您使用什么是Gradle版本?请记住,此示例已经快4年了,它使用了诸如Gradle之类的旧版本。如果我使用例如gradle 3.5-rc-2版本,请执行

./gradlew test

它将失败以下错误:

FAILURE: Build failed with an exception.
* Where:
Build file '/home/wololock/workspace/idea/stackoverflow-answers/46009278/build.gradle' line: 11
* What went wrong:
A problem occurred evaluating root project '46009278'.
> Failed to apply plugin [id 'ratpack-groovy']
   > Could not find method groovy() for arguments [DefaultExternalModuleDependency{group='io.ratpack', name='ratpack-groovy', version='0.9.4', configuration='default'}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

现在,如果我们查看开发此示例时使用了什么gradle版本,我们会根据Project的gradle-wrapper.properties文件使用Gradle 1.10

#Sun Jul 21 19:00:37 CDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http://services.gradle.org/distributions/gradle-1.10-bin.zip

如果您定义了相同的Gradle包装版本,并且可以:

./gradlew test

./gradlew runFatJar

要运行应用程序,它应该有效:

10:39:44: Executing external task 'runFatJar'...
The groovy configuration has been deprecated and is scheduled to be removed in Gradle 2.0. Typically, usages of 'groovy' can simply be replaced with 'compile'. In some cases, it may be necessary to additionally configure the 'groovyClasspath' property of GroovyCompile and Groovydoc tasks.
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:fatJar
wrz 02, 2017 10:39:48 AM ratpack.server.internal.NettyRatpackServer start
INFO: Ratpack started for http://localhost:5050
:runFatJar
Sat Sep 02 10:40:40 CEST 2017 - received blocking request
Sat Sep 02 10:40:50 CEST 2017 - replying blocking request
Sat Sep 02 10:40:50 CEST 2017 - received non-blocking request
Sat Sep 02 10:41:00 CEST 2017 - replying non-blocking request

最新更新