触发Spring集成

时间:2014-10-29 02:23:45

标签: java spring rest spring-integration

我仍然是Spring Integration和Spring框架的新手,所以请耐心等待。我一直在看这个例子。

https://github.com/benjaminwootton/spring-integration-examples/blob/master/target/classes/direct-channel-example.xml

https://github.com/benjaminwootton/spring-integration-examples/tree/master/src/main/java/examples/components

我想知道我或Spring如何完全触发该方法? 我正在尝试使用直接通道为我的REST服务进行循环。我的REST服务使用消息并处理它。

据我所知,使用直接通道,Spring会通过订阅者进行循环,但我不确定Spring是如何实际触发该方法的。

感谢您提供任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

Spring Integration中的第一类公民是MessageChannel,因此为了允许在Integration流中传递消息(HTTP请求),我们应该将消息发送给某些<channel>

由于您说您在REST服务中,我假设您使用:

<int-http:inbound-gateway path="/path1,/path2"
                 request-channel="myChannel"/>

此处myChannel是转换为Spring Integration Message后将发送HTTP请求的组件。

当然,MessageChannel是一个pipe,当我们将一个东西推到一边时,另一方面确实应该有一些东西来进行民意调查。如果是DirectChannel,则为subscriber。我们在这里涉及二等公民 - MessageHandler

如果您使用类似<service-activator input-channel="myChannel" ref="foo" method="service">的内容,则调用堆栈可能如下所示:

DirectChannel#send -> UnicastingDispatcher#dispatch -> 
          ServiceActivatingHandler#handleMessage -> MethodInvokingMessageProcessor#processMessage -> 
                MessagingMethodInvokerHelper#process -> foo#service

HTH