我仍然是Spring Integration和Spring框架的新手,所以请耐心等待。我一直在看这个例子。
我想知道我或Spring如何完全触发该方法? 我正在尝试使用直接通道为我的REST服务进行循环。我的REST服务使用消息并处理它。
据我所知,使用直接通道,Spring会通过订阅者进行循环,但我不确定Spring是如何实际触发该方法的。
感谢您提供任何帮助或建议。
答案 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