Recent applications nowadays are not either developed in isolated environments or for the purpose of “closed” systems. With the development of the Internet, we have access to inexhaustible amount of data and services provided. The birth of the “programmable Web” idea necessitated the creation of tools and methods used for the integration of services. At the same time the number of available protocols and models of communication, makes the application integration one of the most important and most difficult challenges for our industry. Another challenge is the integration of the existing systems that were developed at a time when the idea of a public network was nothing but a dream. Today, we need tools that will allow us to open the systems that were once “closed” for the outside world.
The aim of the training course is to familiarize you with the EIP patterns. Spring Integration will serve as an example – a project developed by a Spring Source community, which is a natural extension of the well known and popular Spring Framework platform. During the course, we will present the methods of implementation of the selected scenarios, based on the EIP patterns, with the help of Spring Integration. Another advantage of the course is, that each discussed and analyzed case study is based on actual projects implemented by the coaches.
The cases of usage implemented as part of the training “Enterprise Integration Patterns with the use of Spring Integration”
In this case, we will present the use of EIP patterns and Spring Integration in a scenario where the queries to the system will be distributed between multiple instances, in order to achieve optimal use of the system resources. The proposed scenario will take into account various available division of labour algorithms, for example “round robin”, “least busy” and “sticky session”. To take full advantage of Spring Integration, the presented scenario will be implemented by us on the basis of a synchronous protocol and message queues stored in internal memory. The following pattern applications will be presented here, for example “Message Filter”, “Dynamic Router” and “Point to Point Channel.”
Scatter and Gather aka Fork and Join
In this scenario, a single query will be divided into smaller tasks. The realization of those tasks will be delegated to other components/integration points, the results of which will be consolidated with the use of Spring Integration. In this scenario, we will present the practical usage of the following patterns “Multicast Router”, “Splitter” and “Aggregator”.
In this case the “load balancer” will be expanded to include a mechanism for storing the results in order to optimize the system load. The results of the queries will be stored in the memory thanks to the use of “Wire Tap” pattern.
Pipe and Filter
The “Pipe and Filter” scenario presents the methods of advanced integration development, through the composition of individual processing steps into the integration point call chains. The presented scenario will be based on the usage of a “routing slip” pattern and a wide range of “Message Transformer” category patterns.
Spring Integration will be used to implement the so-called “blackboard model” where all participants of integration have access to a shared space in which both: the tasks and partial results, are stored. By using the “Publish Subscribe Channel” pattern and JMS API, the performance of tasks and access to partial results will be made available to all participants of integration.
In the Execution Orchestrator scenario we will present the orchestration techniques of services through the development of a Web Service (REST). This will provide a new business functionality using the services already existing in other systems. The created integration will implement the business logic by calling the available points of integration and transformation of the message format.
In this case, we will use Spring Integration to develop adaptation of multiple protocols. In the scenario there is a situation in which the same business functionality is realized by a number of systems through various protocols and message formats. The aim of the scenario is to create a common access point that uses the common protocol and message format. At the same time we present the utilization of “Content based router” and “Content Enricher” patterns.