/agora

Agora

Primary LanguageJava

Agora :: Nibodha's Integration Platform#

Agora provides a platform to build different backend services.

Prerequisites

  • JDK 1.8
  • Maven 3.3

Technology Stack

  • Spring Framework 4.2.3.RELEASE
  • Spring Boot 1.3.0.RELEASE
  • Spring Batch 3.0.5.RELEASE
  • Apache Camel 2.16.1
  • Spring Data 1.11.1.RELEASE
  • Infinispan 8.1.2
  • Apache Active MQ 5.6
  • HikariCP 2.4.3

Architecture

Nibodha Integration Platform(NIP) has a layered architecture that consists of

  • Kernel Layer
  • Services layer
  • Application Layer

Kernel Layer

The agora kernel layer is based on Spring Boot that provides an embedded Jetty Servlet Container into which we can deploy the applications. The kernel layer provides the following features:

Deployment

The agora provides support to deploy services external to the bundled application, so the customer/deployer can decide which service is being deployed on which server.

Logging

A dynamic logging component which is based on logback and supports different APIs like SLF4J, Java Logging etc.

JMX Server

The agora uses jolokia agent to provide restful access to the MBeans, so that the any mbean client can connect to the server.

Configuration

The properties files for configuration are monitored and the changes are automatically propagated to the relevent services/applications

Security

The security framework is based on spring security.

Services Layer

The agora services layer consists of embedded services which interact with the application layer to communicate with the applications built on top of the NIP. The services layer provides:

Transaction Manager

TODO: Tool choice for XA transaction manager (JBoss TS/Atomikos/Bitronix)

Messaging

The messaging service is based on Apache Active MQ which allows the developer to create JMS Message Brokers and clients and deploy them.

Routing/Integration engine

The routing/integration engine based on Apache Camel allows the developer to define routes and implement enterprise integration patterns(EIP) and deploy the routes into the camel context.

Transformation Engine

The transformation engine is a custom bean mapping framework.

Auditing

The auditing service logs the inbound and outbound messages to an audit log file.

ETL Engine

The ETL engine is realized using Spring Batch, and is used extract transform and load from/to different datasources.

Application Layer

TODO: Add Info

Road Map

TODO: Add Info

Project Structure

The integration platform is a multi module maven project with the following modules

  • core - provides the implementation for the services and kernel layers in the architecture layers.
  • launcher - provides services to launch the integration platform
  • configuration - contains the platform configuration files

Platform Configuration Properties List and default values

MQ Configuration

    platform.mq.broker-url=tcp://localhost:61616
    platform.mq.data-dir=${user.home}/mq-data
    platform.mq.enabled=false
    platform.mq.password=
    platform.mq.user-name=

Datasource Configuration

    platform.jdbc.datasource.enabled=false
    platform.jdbc.datasource.names=<comma separated ds names> 
    platform.jdbc.datasource.default.cache-prep-stmts=true
    platform.jdbc.datasource.default.idle-timeout=30000

    platform.jdbc.datasource.default.max-life-time=30000
    platform.jdbc.datasource.default.maximum-pool-size=5
    platform.jdbc.datasource.default.prep-stmt-cache-size=250
    platform.jdbc.datasource.default.prep-stmt-cache-sql-limit=2048
    platform.jdbc.datasource.default.use-server-prep-stmts=true
    
    platform.jdbc.datasource.<dsname>.password=
    platform.jdbc.datasource.<dsname>.jdbc-url=
    platform.jdbc.datasource.<dsname>.user-name=

Cache Configuration

    platform.cache.enabled=true
    platform.cache.config=

License

The Nibodha's Integration Platform Agora is released under version 2.0 of the Apache License

FAQs

1. How to set up development environment?

a. Fork the integration-platform project to the developers gitlab account.

b. Clone the integration platform projects to developer's machine.

c. copy the settings.xml from configuration/etc folder to the maven local repository folder usually <user.home>/.m2

For windows C:\users\<username>\.m2
For linux/mac ~/.m2

2. How to build and run the platform?

Execute the following commands in terminal/command prompt

Build the integration-platform

mvn clean install

Change to launcher directory

cd launcher

Start the integration platform

mvn spring-boot:run

3. How to add datasource?

Change the property
 
  	platform.jdbc.datasource.enabled=true

Add datasource names

	platform.jdbc.datasource.names=ds1
	
If more than one datasource needs to be added, add comma separated ds names.

Add jdbc url, user name, password properties for the datasource

	 platform.jdbc.datasource.ds1.jdbc-url=jdbc:oracle:thin:@localhost:1521:orcl
    platform.jdbc.datasource.ds1.user-name=scott
    platform.jdbc.datasource.ds1.password=tiger

The default values are taken for the other properities mentioned, if property need to be specified for a specific datasource replace "default" with datasource name.