美文网首页
Spring Integration的简介

Spring Integration的简介

作者: 牧笛2017 | 来源:发表于2019-02-28 23:10 被阅读0次

    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服务。
    以上所有步骤就在这一个函数里,而且出错之后会自动重试,不需要自己去操心了。

    相关文章

      网友评论

          本文标题:Spring Integration的简介

          本文链接:https://www.haomeiwen.com/subject/tzuluqtx.html