网站建设相关的网站,云南凡科建站哪家好,天津搜索引擎优化公司,网站对企业的作用我们非常了解Spring框架和JMS 。 在本文中#xff0c;我们将介绍称为Spring Integration的企业集成框架 。 Spring Integration是一个开源企业集成框架#xff0c;可增强Spring单独完成的功能。 Spring Integration构建在Spring的IoC之上#xff0c;它抽象了消息源和目标我们将介绍称为Spring Integration的企业集成框架 。 Spring Integration是一个开源企业集成框架可增强Spring单独完成的功能。 Spring Integration构建在Spring的IoC之上它抽象了消息源和目标集成了消息路由并对其进行操作同时集成了应用程序环境的各种组件。 Spring Integration用于通信的Message对象由有效负载和标头数据组成。 有效负载包含实际数据而标头包含其他元数据例如id timestamp等。下图说明了Spring Integration通信中涉及的不同组件 因此让我们创建一个示例Spring Integration应用程序 使用自定义Java接口作为入站网关 创建一个新的Maven项目。 将依赖项添加到pom.xml文件中 propertiesspring.version4.0.0.RELEASE/spring.versionjms.version1.1-rev-1/jms.versionactivemq.version3.1/activemq.versionspring.integration.version2.2.5.RELEASE/spring.integration.versionjunit.version4.11/junit.versionspring.test.version3.2.3.RELEASE/spring.test.version
/properties!-- Spring Integration --
dependencygroupIdorg.springframework.integration/groupIdartifactIdspring-integration-core/artifactIdversion${spring.integration.version}/version
/dependency
dependencygroupIdorg.springframework.integration/groupIdartifactIdspring-integration-jms/artifactIdversion${spring.integration.version}/version
/dependency!-- Include Spring test --
dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${spring.test.version}/versionscopetest/scope
/dependency!-- Include JUnit --
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/versionscopetest/scope
/dependency 创建学生实体类Student.java 如 package com.jcombat.entity;public class Student {String name;public Student(String name) {this.name name;}public String getName() {return name;}
} 现在让我们在上下文文件中配置spring集成组件将其命名为Test-context.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxmlns:jmshttp://www.springframework.org/schema/jms xmlns:phttp://www.springframework.org/schema/pxmlns:int-jmehttp://www.springframework.org/schema/integrationxmlns:inthttp://www.springframework.org/schema/integrationxmlns:int-jmshttp://www.springframework.org/schema/integration/jmsxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsdhttp://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd!-- Enable annotations --context:annotation-config/!-- Component scan to find all Spring components --context:component-scan base-packageorg.jcombat.integration/bean idsimpleMessageReceiver classcom.jcombat.integration.DemoMessageReceiver /!-- Define a request channel to communicate --int:channel idrequest /int:outbound-channel-adapter channelrequest refsimpleMessageReceiver methodprocessMessage /int:gateway iddemoGateway service-interfacecom.jcombat.integration.DemoGatewayInterfacedefault-request-channelrequest/int:gateway/beans 消息通道是封装实际数据并使消息生产者与使用者分离的东西。 网关基本上是消息传递系统的入口/出口点。 因此如果您有一个消息传递服务器例如ActiveMQ或TIBCO则DefaultMessageListener充当入站网关是我们消息传递系统的入口点。 当消息到达配置的通道时 Service Activator用于调用本地服务其方式是该服务不知道正在从消息传递系统中调用该服务。 适配器从外部消息传递系统JMSSFTP等接收消息并将其“适配”到消息传递系统作为Spring Integration Message T 。 入站JMS适配器接收传入的外部消息并将其“调整”为Spring Integration Message T类型。 反之亦然它需要一个Spring Integration Message T并将其“调整”为外部系统所需的格式。 因此一旦消息通过入站适配器进入它就会通过Channels从一个组件流向另一个组件。 最终将消息写到某个地方可能是适当的。 我们可以使用出站适配器编写消息。 现在让我们创建在上下文中指定的网关接口如下所示 package com.jcombat.integration;import com.jcombat.entity.Student;public interface DemoGatewayInterface {public void process(Student student);
} 创建一个接收器类该类将在被适配器路由后最终从通道接收传入消息。 package com.jcombat.integration;import org.springframework.integration.Message;import com.jcombat.entity.Student;public class DemoMessageReceiver {public void processMessage(MessageStudent message) {Student student message.getPayload();System.out.println(Message Received - Student Name - student.getName());}
} 就是这个。 最后我们需要一个客户端来调用网关接口方法。 让我们使用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);}
} 将您的应用程序添加到服务器并启动服务器。 导航到我们在上文第7点中创建的Test.java文件并将其作为JUnit测试运行。 以下是我们在IDE控制台中看到的日志 使用Spring DefaultMessageListener作为入站网关 创建一个新的Maven项目。 确保ActiveMQ服务器已启动并正在运行。 首先是将条目输入pom.xml文件。 因此这与前面的情况相同。 让我们编写上下文文件 jmsContext.xml 并将Spring Integration组件配置为 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxmlns:jmshttp://www.springframework.org/schema/jms xmlns:phttp://www.springframework.org/schema/pxmlns:int-jmehttp://www.springframework.org/schema/integrationxmlns:inthttp://www.springframework.org/schema/integrationxmlns:int-jmshttp://www.springframework.org/schema/integration/jmsxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsdhttp://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsdbean idconnectionFactory classorg.apache.activemq.spring.ActiveMQConnectionFactoryproperty namebrokerURL valuetcp://localhost:61616 //beanbean idmessageListenerContainerclassorg.springframework.jms.listener.DefaultMessageListenerContainerproperty nameconnectionFactory refconnectionFactory /property namedestinationName valuetestQueue /property namemaxConcurrentConsumers value1 /property nameconcurrentConsumers value1 /property namereceiveTimeout value5000 /property namerecoveryInterval value60000 /property nameautoStartup valuetrue //bean!-- Define a channel to communicate out to a JMS Destination --int:channel idinbound /int:channel idoutbound /bean idsimpleMessageListener classcom.jcombat.listener.SimpleMessageListener /int-jms:message-driven-channel-adapteridjmsIn containermessageListenerContainer channelinboundacknowledgeauto /int:service-activator input-channelinboundoutput-channeloutbound refsimpleMessageListener methodonMessage /int-jms:outbound-channel-adapter idjmsOutchanneloutbound connection-factoryconnectionFactorydestination-namesampleQueue //beans 让我们在服务器启动时加载上下文。 为此请在web.xml文件中输入适当的内容如下所示 web-app xmlnshttp://java.sun.com/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsdversion3.0context-paramparam-namecontextConfigLocation/param-nameparam-value/WEB-INF/jmsContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener
/web-app 创建侦听器类该类将最终接收消息如下所示 package com.jcombat.listener;public class SimpleMessageListener {public String onMessage(String message) {System.out.println(message);return message;}
} 是时候运行我们的应用程序了。 因此这应该作为 发送自定义消息到testQueue 侦听器被调用它的onMessage方法被执行将进入的消息记录为IDE控制台 消息通过出站通道并通过出站适配器传递到目标sampleQueue 如下所示 下载源代码 您可以在此处下载源代码。 翻译自: https://www.javacodegeeks.com/2015/11/introduction-to-spring-integration-framework.html