快速业务通道

Spring Integration入门 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
;我们将在很大程度上尽可能保持内容一致并明确,那你要处理Message对象,Message对象如图1所示。

Spring Integration入门(4)

时间:2011-01-26 infoq 译:王丽娟

Message类是个包装器,包装被处理消息的有效负载。对它进行操作,很容易获得有效负载和消息头,你可以对有效负载进行类型转换,可以检查、改变消息头。Spring Integration不要求你使用Message接口。你的应用可以暴露一些方法,这些方法的参数类型跟你消息有效负载的类型相同。比如说,来自于文件适配器(可以从文件系统发送消息的适配器)的消息可能会被改为java.io.File实例。

让我们来看一个集成例子,它把电子邮件发送到一个电子邮件地址,转换电子邮件后再将其发布到博客中。

示例的配置在src/main/resources/integrationsContext.xml中。

integrationsContext.xml文件乍看起来很平常。XML顶端的bean负责将属性文件中的变量宏替换到该XML配置脚本中。后面导入了另一个Spring文件,该文件包含本集成中要使用的简单服务。再没什么特别的了。

接下来继续看相继定义的四个bean,它们还是有意思的:服务催化器newBlogPublishingServiceActivator、转换器 emailToBlogTransformer、处理器outboundBlogPostHandler和过滤器 emailsInFilterAgainstWhitelist。这四个bean会在配置的后面部分里用到。

实质配置的第一段是poller元素,它是文档的默认轮询器。确切来说,轮询器是一种机制,在有变化时轮询不同端点,并在感知到某些内容发生变化后让适配器对其做出响应,就像一个事件。出于简单,我们为整个Spring Integration配置一个默认的轮询器。见图2。

接下来的三个元素是三个通道声明。他们毫无意义,只是命名的通道而已。没有端点或适配器的通道毫无用处。见图3。

下一行配置了电子邮件适配器。电子邮件适配器查找发入系统的电子邮件,并将其放入名叫emailsIn的通道,该通道已经在上面定义了。电子邮件发进来时,电子邮件系统并不会播报事件。在出现异常的时候(比如Spring Integration也支持的IMAP IDLE),你通常需要一些东西来轮询电子邮件帐户以查找新的电子邮件。只要有新消息,它们就一次阅读一条消息,并将该消息传递到处理管道的下一个组件。见图4。

现在消息在emailsIn通道中传递,被传递到通道的下一个组件——转换器bean。转换器获取所有给它的内容,以某种方式改变消息(我们稍后会详细讨论这一点),然后顺便发送出去。这种情况下,会给Transformer给定一个包含MimeMessage类型有效负载的Message,转化器用于创建BlogPost类型的一个对象。BlogPost是我们系统特定的一个领域类。我们在这里把它作为DTO来用,但很显然,它来自哪里并不重要 ——如果你愿意,根据你的领域去处理它也可以。Transformer元素的最佳用法是:将消息格式转换为系统常见的格式。这跟标准数据模式相关。

由此产生的BlogPost封装在一条新消息中,其中包含原始消息的头信息。头信息正是你期望的那样:特定于请求的值,可以对其访问以获取更多的元数据。例如,从内部来说,Spring Integration总线给每样内容分配一个ID。该ID暴露为头信息值供你使用。该ID保证是唯一的。

然后消息被发送给过滤器emailsInFilterAgainstWhitelist,该过滤器访问有效负载获取发送者的值。这样做是为了确保在发布到博客的过程中你不会收到垃圾邮件。这个例子跟整个解决方案一样,简单的有些不合常理。你可以想象是去查询Spring安全或LDAP,或是比这个做得还要好的东西。见图5:

XML配置的最后一段内容是service-activator元素,它获取所有给它的内容并进行处理。在这种情况下,我们告知Spring Integration调用ID为newBlogPublishingServiceActivator的bean的 pubishI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号