我使用spring integration 4.1.4和spring integration dsl groovy 1.1.0
我包含了spring integration core,http依赖。
当我执行spring integration dsl groovy http示例时,它在控制台中抛出null值。我不确定我错过了什么。
这是我的代码看起来像
IntegrationBuilder builder = new IntegrationBuilder("http");
def flow = builder.messageFlow {
transform {"http://www.google.com/finance/info?q=$it"}
httpGet(url:{"${it}"},responseType:String)
}
Object result = flow.sendAndReceive("vmw");
有人可以帮帮我吗?
答案 0 :(得分:1)
这已在主分支上修复。同时,一个简单的解决方法是
url:{"http://www.google.com/finance/info?q=$it".toString()}
或
url:{"http://www.google.com/finance/info?q=$it" as String}
答案 1 :(得分:0)
什么版本的DSL?您需要从master构建以与Spring Integration 4.1.x一起使用。
我会警告你,多年来Groovy DSL很少受到关注;从来没有在社区中获得任何牵引力。
Java DSL是首选;它得到了积极的维护和增强。
答案 2 :(得分:0)
我刚刚测试过您的案例并且没有看到任何null value
,但还有其他错误:
Caused by: java.lang.IllegalStateException: 'uriExpression' evaluation must result in a 'String' or 'URI' instance, not: class org.codehaus.groovy.runtime.GStringImpl
所以,这真的是一个错误,随时可以提出JIRA票,并会尽快照顾。
另一方面,请允许我向您提出这样的问题:当我们已经Java DSL时,有什么理由可以使用这种不稳定,无需维护的东西。从另一方面,我们可以使用常规Spring Groovy Configuration支持中的任何Spring Integration命名空间,例如:
beans {
xmlns([si: 'http://www.springframework.org/schema/integration'])
def headers = environment.getProperty('headers')
def parser = new JsonSlurper()
def result = parser.parseText(headers)
si.channel(id:'input')
si.channel(id:'output')
si.'header-enricher'('input-channel':'input','output-channel':'output') {
result.each {k,v->
si.'header'(name:k,expression:v)
}
}
}