【问题标题】:Triggering Spring Integration触发 Spring 集成
【发布时间】:2014-12-24 15:41:04
【问题描述】:
【问题讨论】:
标签:
java
spring
rest
spring-integration
【解决方案1】:
Spring Integration 中的第一类公民是MessageChannel,因此为了允许消息(HTTP 请求)在集成流中传输,我们应该将消息发送到某个<channel>。
既然你说你在 REST 服务中,我假设你使用:
<int-http:inbound-gateway path="/path1,/path2"
request-channel="myChannel"/>
这里的myChannel是一个组件,在转换为Spring集成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