热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringIntegrationFramework简介

我们非常了解Spring框架和JMS。在本文中,我们将介绍称为SpringIntegration的企业集成框架。SpringIntegration是一个开源企业集成框

我们非常了解Spring框架和JMS 。 在本文中,我们将介绍称为Spring Integration企业集成框架Spring Integration是一个开源企业集成框架,可增强Spring单独完成的功能。 Spring Integration构建在Spring的IoC之上,它抽象了消息源和目标,集成了消息,路由并对其进行操作,同时集成了应用程序环境的各种组件。

Spring Integration用于通信的Message对象有效负载标头数据组成。 有效负载包含实际数据,而标头包含其他元数据,例如id , timestamp等。下图说明了Spring Integration通信中涉及的不同组件

因此,让我们创建一个示例Spring Integration应用程序:

使用自定义Java接口作为入站网关

  1. 创建一个新的Maven项目。
  2. 将依赖项添加到pom.xml文件中:

    4.0.0.RELEASE1.1-rev-13.12.2.5.RELEASE4.113.2.3.RELEASE

    org.springframework.integrationspring-integration-core${spring.integration.version}

    org.springframework.integrationspring-integration-jms${spring.integration.version}

    org.springframeworkspring-test${spring.test.version}test

    junitjunit${junit.version}test

  3. 创建学生实体类Student.java ,   如:

    package com.jcombat.entity;public class Student {String name;public Student(String name) {this.name = name;}public String getName() {return name;}
    }

  4. 现在,让我们在上下文文件中配置spring集成组件(将其命名为Test-context.xml ):


    消息通道是封装实际数据并使消息生产者与使用者分离的东西。

    网关基本上是消息传递系统的入口/出口点。 因此,如果您有一个消息传递服务器,例如ActiveMQ或TIBCO,则DefaultMessageListener充当入站网关,是我们消息传递系统的入口点。

    当消息到达配置的通道时, Service Activator用于调用本地服务,其方式是该服务不知道正在从消息传递系统中调用该服务。

    适配器从外部消息传递系统(JMS,SFTP等)接收消息,并将其“适配”到消息传递系统(作为Spring Integration Message )。 入站JMS适配器接收传入的外部消息,并将其“调整”为Spring Integration Message 类型。 反之亦然:它需要一个Spring Integration Message 并将其“调整”为外部系统所需的格式。

    因此,一旦消息通过入站适配器进入,它就会通过Channels从一个组件流向另一个组件。 最终,将消息写到某个地方可能是适当的。 我们可以使用出站适配器编写消息。

  5. 现在,让我们创建在上下文中指定的网关接口,如下所示:

    package com.jcombat.integration;import com.jcombat.entity.Student;public interface DemoGatewayInterface {public void process(Student student);
    }

  6. 创建一个接收器类,该类将在被适配器路由后最终从通道接收传入消息。

    package com.jcombat.integration;import org.springframework.integration.Message;import com.jcombat.entity.Student;public class DemoMessageReceiver {public void processMessage(Message message) {Student student = message.getPayload();System.out.println("Message Received - Student Name - " + student.getName());}
    }

  7. 就是这个。 最后,我们需要一个客户端来调用网关接口方法。 让我们使用Spring Test Framework来做到这一点:

    package com.jcombat.integration;import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.jcombat.entity.Student;
    import com.jcombat.integration.DemoGatewayInterface;@RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration
    public class Test {@Autowiredprivate DemoGatewayInterface request;@org.junit.Testpublic void testIntegration() {Student emp = new Student("Abhishek");request.process(emp);}
    }

  8. 将您的应用程序添加到服务器并启动服务器。
  9. 导航到我们在上文第7点中创建的Test.java文件,并将其作为JUnit测试运行。 以下是我们在IDE控制台中看到的日志:

    短跑
  10. 使用Spring DefaultMessageListener作为入站网关

    1. 创建一个新的Maven项目。
    2. 确保ActiveMQ服务器已启动并正在运行。
    3. 首先是将条目输入pom.xml文件。 因此,这与前面的情况相同。
    4. 让我们编写上下文文件( jmsContext.xml ),并将Spring Integration组件配置为:


    5. 让我们在服务器启动时加载上下文。 为此,请在web.xml文件中输入适当的内容,如下所示:

      contextConfigLocation/WEB-INF/jmsContext.xmlorg.springframework.web.context.ContextLoaderListener

    6. 创建侦听器类,该类将最终接收消息,如下所示:

      package com.jcombat.listener;public class SimpleMessageListener {public String onMessage(String message) {System.out.println(message);return message;}
      }

    7. 是时候运行我们的应用程序了。 因此,这应该作为:
      1. 发送自定义消息到testQueue :

        sprInt1
      2. 侦听器被调用,它的onMessage方法被执行,将进入的消息记录为IDE控制台:

        sprInt2
      3. 消息通过出站通道并通过出站适配器传递到目标sampleQueue ,如下所示:

        sprInt3
    8. 下载源代码

      您可以在此处下载源代码。

翻译自: https://www.javacodegeeks.com/2015/11/introduction-to-spring-integration-framework.html



推荐阅读
  • 通过CreateDirectory命令创建相应的Directory之后,可以将目录的访问权限授予其他用户,这样其他用户就能通过外部表访问很多主机上的文件,而不需要登录到数据库服务器 ... [详细]
  • 我理解ViewHolder的onBindViewHolder如何工作,但是我不清楚notifyItemRangeChanged(0,this.data.size())如何;适用于此示例以及它的确 ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • 问题说明最近看到Spring事务,在学习过程中遇到一个很苦恼问题搭建好Spring的启动环境后出现了一点小问题在启动时候却出现[java.lang.NullPointerExcep ... [详细]
  • Android开发之Notification(实现消息弹窗、提示音以及点击事件)
    文章目录通知管理器通知渠道通知发送通知更多效果添加点击事件取消消息通知管理器通知管理器(NotificationManager)类是一个通知管理器&# ... [详细]
  • 先看看效果是不是自己想要的吧item及item内部控件点击事件不懂的可以先点击查看 ... [详细]
  • 我正在尝试使用环境变量将DB参数传递给BashOperator,但我找不到任何文档/示例如何使用Jinja模板中的连接。所以我正在寻找类似于变量的东西 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • hibernate映射组件映射
    在Hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid(对象标识符),compo ... [详细]
  • 如何理解MyBatis动态SQL
    本篇内容主要讲解“如何理解MyBatis动态SQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解M ... [详细]
  • pdf怎么把html变成pdf1 用AdobeAcroat8.1.2,打开网页后,页面右键菜单中会出现一个“转换为AobePDF的选项,点击就可以转换。 安装AdobeAcroba ... [详细]
  • PNG在IE6下透明问题的解决办法
    2019独角兽企业重金招聘Python工程师标准做Web开发的朋友一定都知道PNG是一个相当不错的图片格式,但是这个好的格式却在IE6时代造成了麻烦࿰ ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
author-avatar
Saber木木-汐7rv
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有