要学习Spring Integration,首先要理解Channel,然后就是要知道消息从何而来。
这篇文章,假设读者已经理解什么时候Channel,那么接下来就要解决消息从何而来的问题。
消息可以由程序直接调用channel的send方法,自己给自己发消息,不过这种做法比较傻。
通常是利用inbound-channel-adapter,来实现消息的采集。
那inbound-channel-adapter是个啥?它就是一个消息来源,它不断的产生消息,然后通过某个channel把消息送出去。这就是它的基本原理。
下面是一个例子,我们可以来解读一下。
<int:inbound-channel-adapter ref="messageSource" method="generateMsg" channel="inputChannel">
<int:poller fixed-rate="5000"/>
</int:inbound-channel-adapter>
上面这个例子,用xml的方式,声明了一个inbound-channel-adapter。我们根据原理来解读一下,它是在做什么。
这个例子里有个ref=messageSource, 这个messageSource通常是一个类,这个类应该有个方法负责产生消息。对照上面这个例子,这个方法就叫“generateMsg”。也就是说上面这个声明是说,使用messageSource.generateMsg方法,来产生一个消息,并放入inputChannel。
如何产生消息呢?实际上就是generateMsg方法 的返回值。无论是什么,inbound-channel-adapter都会将返回值包装成一个GenericMessage,然后放入inputChannel.
如果inputChannel有一个订阅者,或者消费者,就可以读取到这个消息。