Сегодняшнее приложение предполагает доступ всего бизнеса в корпоративной среде, независимо от прикладных технологий, которые требуют бесшовной интеграции с отчаянными системами.
Эта интеграция может быть достигнута путем подключения отчаянных систем с использованием технологий Middleware.
Платформа интеграции позволяет приложениям обмениваться информацией друг с другом, обеспечивая высокую совместимость архитектуры.
Spring Integration предоставляет посредническую инфраструктуру для создания облегченного интеграционного решения с использованием маршрутизации и посредничества независимо от протоколов. Spring Integration — это облегченная инфраструктура маршрутизации и посредничества, для развертывания которой не требуется тяжелый ESB-контейнер.
Spring Integration использует объект Message для связи, маршрутизации и передачи данных, что является ничем иным, но оболочкой для объекта Java состоит из полезной нагрузки и заголовка. Полезные данные состоят из данных, которые могут быть любого типа, такие как Файл, Строка, Поток и т. Д., А заголовок состоит из общей информации о сообщении, такой как идентификатор, отметка времени и т. Д.
Сообщение передается производителю по каналу, который отделяет источник от пункта назначения и отправляет сообщение в любые протоколы. такие как JMS, HTTP, Ldap, файл и т. д.
Производители отправляют сообщения на канал, а потребители получают сообщения от канала
Приложение для простой интеграции
Ниже приведен пример того, как производитель отправляет объект сотрудника на канал, а издатель получает сообщение от канала.
Скачать исходный код: Скачать полную ссылку для скачивания кода .
Конфигурация Spring Dependency Maven
Для начала простого примера интеграции нам просто нужно добавить базовую интеграцию Spring и контекстную зависимость Spring в maven pom.xml. Кроме того, мы также нуждаемся в тесте Junit и Spring, чтобы включить юнит-тест
<properties> <spring.framework.version>3.2.3.RELEASE</spring.framework.version> <spring.integration.version>2.2.4.RELEASE</spring.integration.version> <junit.version>4.11</junit.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.framework.version}</version> </dependency> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-core</artifactId> <version>${spring.integration.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.framework.version}</version> <scope>test</scope> </dependency> </dependencies>
Конфигурация Spring
Мы должны настроить канал и шлюз в конфигурации Spring для отправки и получения сообщения.
SpringIntegTest-context.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" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.2.xsd"> <!-- sendRequest receiveRequest --> <annotation-config/> <context:component-scan base-package="org.springsample.integration"/> <gateway id="request" service-interface="org.springsample.integration.SentRequest"/> <channel id="sendRequest"/> <outbound-channel-adapter channel="sendRequest" ref="receiveResponse" method="processMessage" /> </beans:beans>
Здесь мы создали шлюз запроса для отправки сообщения на канал и исходящий адаптер для получения сообщения из канала sendRequest.
Шлюз Spring Integration — это точки входа для отправки сообщений, которые задаются с помощью Java Interface. Spring Integration автоматически определяет реализацию прокси во время выполнения
запроса и получения
Ниже мы создадим класс SentRequest и ReceiveResponse для отправки и получения сообщения следующим образом
SentRequest.java
package org.springsample.integration; import org.springframework.integration.annotation.Gateway; public interface SentRequest { @Gateway(requestChannel="sendRequest") public void process(Employee emp); }
В аннотации @Gateway будет указана точка входа для отправки сообщения.
package org.springsample.integration; import org.springframework.integration.Message; import org.springframework.integration.annotation.MessageEndpoint; @MessageEndpoint public class ReceiveResponse { public void processMessage(Message<Employee> message) { Employee employee = message.getPayload(); System.out.println("Message Received \n Name :"+employee.getName()+"/n Phone : "+employee.getPhone()+"/n Address :"+employee.getAddress()); } }
@MessageEndpoint будет указывать, что он получит сообщение от канала через адаптер.
Нет, но не ниже, это сотрудник POJO
package org.springsample.integration; public class Employee { private String name; private String title; private String address; private String phone; public Employee(String name, String phone, String address) {this.name=name;this.phone=phone; this.address=address; //……..Getter amd Setter } }
Тестирование
Мы можем проверить это, используя тестовые рамки, как показано ниже
package org.springbyexample.integration; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class SpringIntegTest { @Autowired private SentRequest request = null; @Test public void testIntegration() { Employee emp = new Employee("John", "12345678", "Sunny Street Mac RG1"); request.process(emp); } }
Убедитесь, что вы сохраняете имя конфигурационного файла Spring SpringIntegTest-context в org / springbyexample / интеграции и должны находиться в вашем пути к классам.
При запуске SpringIntegTest будет отображаться консольное сообщение следующим образом
Полученное сообщение
Имя: John / n Телефон: 12345678 / n Адрес: Sunny Street Mac RG1
Скачать исходный код: ссылка для скачивания .
Резюме
Spring Integration — это простая интеграция с открытым исходным кодом, которая расширяет слабые связи и делает интеграцию приложений легкой и простой. Он будет интегрировать, маршрутизировать и передавать сообщение через канал и шлюз настраиваемым способом.
Эта статья поможет понять, что такое Spring Integration, и поможет вам разработать простое интеграционное приложение.
Ресурсы
http://static.springsource.org/spring-integration/reference/html/overview.html