Сегодняшнее приложение предполагает доступ всего бизнеса в корпоративной среде, независимо от прикладных технологий, которые требуют бесшовной интеграции с отчаянными системами. Эта интеграция может быть достигнута путем подключения отчаянных систем с использованием технологий 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.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
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; @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
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 ) @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, и поможет вам разработать простое интеграционное приложение.