Spring与Java DSL

时间:2015-06-03 21:44:12

标签: java spring spring-integration dsl


在Spring Integration Java Dsl中有一种方法可以做到这一点:

@Bean
IntegrationFlow serviceFlow() {
    return IntegrationFlows
        .from("inputChannel")
        .handle(File.class, (p,h) -> someService.someMethod(p))
        .channel("someChannel")
        .get();
}

表现得像这样:

@Bean
IntegrationFlow serviceFlow() {
    return IntegrationFlows
        .from("inputChannel")
        .handle("someService","someMethod")
        .channel("someChannel")
        .get();
}

涉及异常处理?

第一个版本抛出:

2015-06-03 23:30:42.912 ERROR 6251 --- [ask-scheduler-1] o.s.integration.handler.LoggingHandler   : org.springframework.messaging.MessageHandlingException: ; nested exception is java.lang.reflect.InvocationTargetException
at org.springframework.integration.dsl.LambdaMessageProcessor.processMessage(LambdaMessageProcessor.java:129)
at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:71)
(...)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
(...)
Caused by: java.lang.RuntimeException: error from service
at com.lukzar.SomeService.someMethod(SomeService.java:15)
at com.lukzar.IntegrationConfiguration.lambda$serviceFlow$1(IntegrationConfiguration.java:48)
at com.lukzar.IntegrationConfiguration$$Lambda$2/1367672657.handle(Unknown Source)
(...)

和beanName和methodName的版本抛出:

2015-06-03 23:27:45.841 ERROR 6177 --- [ask-scheduler-1] o.s.integration.handler.LoggingHandler   : org.springframework.messaging.MessageHandlingException: ; nested exception is java.lang.RuntimeException: error from service
at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:78)
at org.springframework.integration.dsl.support.BeanNameMessageProcessor.processMessage(BeanNameMessageProcessor.java:57)
(...)
Caused by: java.lang.RuntimeException: error from service
at com.lukzar.SomeService.someMethod(SomeService.java:15)
(...)

1 个答案:

答案 0 :(得分:0)

如果“表现得像”意味着将error from service异常作为第一个cause,那么我们可以考虑从堆栈跟踪中删除InvocationTargetException。这会使基础异常成为MessageHandlingException的{​​{1}}。

如果你的意思是使堆栈跟踪绝对相同,那么没有。

如果您的意思是前者,那么请针对cause组件打开JIRA Issue,我们会看看。