integration

1       基本概念

spring integration是一个企业应用集成系统。主要通过消息、通道、消息端点等概念完成不同系统之间的集成。

2       主要的功能实体

2.1       消息(Message)

2.2       消息通道(Message channel)

2.3       消息端点(Message Endpoint)

以上概念不做说明、网上很多、贴了也不一定能明白、直接上Demo 比较容易理解

实例(helloword):

   1:创建maven工程        

        pom.XML >>

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework.integration.samples</groupId>
  <artifactId>helloworld</artifactId>
  <version>4.1.0.BUILD-SNAPSHOT</version>
  <name>Hello World Sample</name>
  <description>Hello World Sample</description>
  <url>http://projects.spring.io/spring-integration</url>
  <organization>
    <name>SpringIO</name>
    <url>https://spring.io</url>
  </organization>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>garyrussell</id>
      <name>Gary Russell</name>
      <email>grussell@pivotal.io</email>
      <roles>
        <role>project lead</role>
      </roles>
    </developer>
    <developer>
      <id>markfisher</id>
      <name>Mark Fisher</name>
      <email>mfisher@pivotal.io</email>
      <roles>
        <role>project founder and lead emeritus</role>
      </roles>
    </developer>
    <developer>
      <id>ghillert</id>
      <name>Gunnar Hillert</name>
      <email>ghillert@pivotal.io</email>
    </developer>
    <developer>
      <id>abilan</id>
      <name>Artem Bilan</name>
      <email>abilan@pivotal.io</email>
    </developer>
  </developers>
  <scm>
    <connection>scm:git:scm:git:git://github.com/spring-projects/spring-integration-samples.git</connection>
    <developerConnection>scm:git:scm:git:ssh://git@github.com:spring-projects/spring-integration-samples.git</developerConnection>
    <url>https://github.com/spring-projects/spring-integration-samples</url>
  </scm>
  <dependencies>
    <dependency>
      <groupId>org.springframework.integration</groupId>
      <artifactId>spring-integration-core</artifactId>
      <version>4.2.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-all</artifactId>
      <version>1.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.2.0.RELEASE</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>1.9.5</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>repo.spring.io.milestone</id>
      <name>Spring Framework Maven Milestone Repository</name>
      <url>https://repo.spring.io/libs-milestone</url>
    </repository>
  </repositories>
</project>

   2:Class


package org.springframework.integration.samples.helloworld;


/**
 * @author Perry
 *
 */
public class HelloService {

	public String sayHello(String name) {
		return "Hello " + name;
	}

}
 

3:main 执行方法:


package org.springframework.integration.samples.helloworld;

import org.apache.log4j.Logger;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.PollableChannel;
import org.springframework.messaging.support.GenericMessage;

/**
 * 
 * 
 * @author Perry
 *
 */
public class HelloWorldApp {

	private static Logger logger = Logger.getLogger(HelloWorldApp.class);

	public static void main(String[] args) {
		AbstractApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/integration/helloWorldDemo.xml", HelloWorldApp.class);
     
		//MessageChannel 接口定义
		MessageChannel inputChannel = context.getBean("inputChannel", MessageChannel.class);
		//开始提到 消息通道支持两种模式,是否对支持消息缓存。如下的两个子接口分别针对这两种不同需求进行了定义: pollable[支持缓存] 与 subscribable[不支持缓存] 通道,如下为PollableChannel类代码
		PollableChannel outputChannel = context.getBean("outputChannel", PollableChannel.class);
		//当消息被创建后,会生成随机唯一的ID,同时构造函数会把根据用户传进来的headers属性值,加入到header中的map
		inputChannel.send(new GenericMessage<String>("World"));
		System.out.println("==> HelloWorldDemo: " + outputChannel.receive(0).getPayload());
	}

}

 

4:xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/integration"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
			http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/integration
			http://www.springframework.org/schema/integration/spring-integration.xsd">

	<channel id="inputChannel"/>

	<channel id="outputChannel">
		<queue capacity="10"/>
	</channel>

	<service-activator input-channel="inputChannel" output-channel="outputChannel" ref="helloService" method="sayHello"/>
	<beans:bean id="helloService" class="org.springframework.integration.samples.helloworld.HelloService"/>

</beans:beans>

 

 

 

5:控制台输出

103635_Kaga_2601842.png

 

 

 

转载于:https://my.oschina.net/wxpi/blog/856046

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值