Spring Integration的简介

Spring Integration在基于Spring的应用程序中实现轻量级消息传递,并支持通过声明适配器与外部系统集成。 Spring Integration的主要目标是提供一个简单的模型来构建企业集成解决方案,同时保持关注点的分离,这对于生成可维护,可测试的代码至关重要。Spring Framework鼓励开发人员使用接口进行编码,并使用依赖注入(DI)为普通旧Java对象(PO​​JO)提供执行其任务所需的依赖项。 Spring Integration将这一概念更进一步,其中POJO使用消息传递范例连接在一起,并且各个组件可能不了解应用程序中的其他组件。这种应用程序是通过组装细粒度可重用组件来构建的,以形成更高级别的功能。通过精心设计,这些流程可以模块化,并在更高的层次上重复使用。

简单说来,就是写一个带有 configuration注解的类,将一个流程一步到位配置完。

比如我需要从ftp服务器定期读取一个文件,然后需要一行一样的处理一些业务,然后转发给另外的地方。普通的编程就是写一些service,然后用quartz调用,然后有个严重的问题,如果处理到一半出了异常,如何重试?在何处重试?Spring Integration里编程则是一个文件写完了,异常处理和重试机制已经包含在里面了。

~~~
@Bean
public IntegrationFlow getOrdersFromHttpRequest( MessageChannel inboundOrderChannel ) {
return IntegrationFlows
.from( inboundOrderChannel )
.enrich( orderWithEmbedded -> orderWithEmbedded
.requestSubFlow( subflow -> subflow
.transform( new RealOrderToExchangeableCustomer() ) // transform to ExchangeableCustomer
.handle( salesforceClient, "createOrUpdateCustomer" ) )
.propertyExpression( "salesAccountId", "payload" )
.sendTimeout( 10000 )
)
.transform( new RealOrderToExchangeableOrder() )
.handle( this::sendOrderToNetsuite )
.get();
}
~~~

上面这个例子,读取消息通道里的消息,生成orderWithEmbedded类,转换,发给salesforceClient,将返回的salesAccountId属性分给ExchangeableCustomer类,再转换成ExchangeableOrder,然后发给sendOrderToNetsuite服务。
以上所有步骤就在这一个函数里,而且出错之后会自动重试,不需要自己去操心了。

猜你喜欢

转载自blog.csdn.net/weixin_33737774/article/details/88248071