Сегодняшнее приложение предполагает доступ всего бизнеса в корпоративной среде, независимо от прикладных технологий, которые требуют бесшовной интеграции с отчаянными системами. Эта интеграция может быть достигнута путем подключения отчаянных систем с использованием технологий Middleware.
Платформа интеграции позволяет приложениям обмениваться информацией друг с другом, обеспечивая высокую совместимость архитектуры. Spring Integration предоставляет посредническую инфраструктуру для создания облегченного интеграционного решения с использованием маршрутизации и посредничества независимо от протоколов. Spring Integration — это облегченная инфраструктура маршрутизации и посредничества, для развертывания которой не требуется тяжелый ESB-контейнер.
Spring Integration использует объект Message для связи, маршрутизации и передачи данных, что является ничем иным, но оболочкой для объекта Java состоит из полезной нагрузки и заголовка. Полезные данные состоят из данных, которые могут быть любого типа, такие как файл, строка, поток и т. Д., А заголовок состоит из общей информации о сообщении, такой как идентификатор, отметка времени и т. Д.
Сообщение передается производителю по каналу, который отделяет источник от места назначения и отправляет сообщение в любые протоколы, такие как JMS, HTTP, Ldap, файл и т. Д. Производители отправляют сообщения в канал, а потребители получают сообщения из канала.
Простое приложение для интеграции
В следующем примере показано, как производитель отправляет объект сотрудника на канал, а издатель получает сообщение от канала.
Конфигурация Spring Dependency Maven
Для начала простого примера интеграции нам просто нужно добавить базовую интеграцию Spring и контекстную зависимость Spring в maven pom.xml. Кроме того, мы также нуждаемся в тесте Junit и Spring, чтобы включить модульное тестирование.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<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> |
Конфигурация пружины
Мы должны настроить канал и шлюз в весенней конфигурации для отправки и получения сообщения
SpringIntegTest-context.xml
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?xml version="1.0" encoding="UTF-8"?>xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://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
|
1
2
3
4
5
6
7
|
package org.springsample.integration;import org.springframework.integration.annotation.Gateway;public interface SentRequest { @Gateway(requestChannel="sendRequest") public void process(Employee emp);} |
В аннотации @Gateway будет указана точка входа для отправки сообщения.
|
01
02
03
04
05
06
07
08
09
10
11
|
package org.springsample.integration;import org.springframework.integration.Message;import org.springframework.integration.annotation.MessageEndpoint;@MessageEndpointpublic 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
|
01
02
03
04
05
06
07
08
09
10
11
|
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 }} |
тестирование
Мы можем проверить это, используя тестовые рамки, как показано ниже
|
01
02
03
04
05
06
07
08
09
10
11
12
|
package org.springbyexample.integration;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfigurationpublic 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, и поможет вам разработать простое интеграционное приложение.
