Posts

reacto - The Client Component

The rationale behind detailing the harmony among indivudual components both at the Server and the Client side, so that readers can get a clear picture of different REACTIVE components and their flows. RECATO is built on RxJava and Vert.x . The principles on which these two entities are based out promises Resilliency, Resposiveness, Elasticity, Event Driven Architecture and Asynchronous behaviour. All of these commits towards a more Scalable Architecture. Service Registry is the component through which we invoke commands. Implementations are: 1) VertxServiceRegistry. 2) LocalServiceRegistry. Let’s examine the control flow with VertxServiceRegistry. The Command Execution feature that VertxServiceRegistry provides is due to the implementation of ServiceRegistry interface which provides necessary methods to execute a given Command. With the given Command as input, alongside with ServiceDiscovery , all the records are fetched which are recently updated and having...

reacto - The Server Component

Reacto – A Function Reactive Microservices Library. Now, when we talk about any Microservice Library, the first thing that pops up in our mind is the service implementation to meet our business ends and along with that the client support to invoke those services. There exists a lot of features that makes this library pretty awesome and with that it must also be admitted that it is also quite easy to learn and start with. The Design Principles that has been followed while developing has been described well in its GITHUB home page. What we will really try,is to understand the orchestration among different components of this library, which in turn will aid in getting idea about Control Flow while we use this toolkit. There are two modules corresponding to Reacto: 1) reacto --> The Client 2) reacto-vertx --> The Server Counter Part. reacto-vertx uses Vert.x for Service Publishing and Service discovery along with other features corresponding to Vert.x The Hear...

REACTO - A Functional Reactive Microservices Framework

What’s new in Spring 5? This is the most anticipated ask for any Spring aspirant and to be honest why it shouldn’t be, because Spring is such a awesome framework that we always ask more from it. This time too Spring came with a bunch of interesting and cool features. Java 8 is now an inevitable part of Spring 5 and so here the magic begins. Out of all the features that Spring 5 provides that most interesting ONES seems to me are: 1) Spring is now FUNCTIONAL – Functions are now First Class Citizens and they can passed anywhere. This is where Lambdas comes in. 2) Spring is now REACTIVE – Spring now supports Reactive Extensions (Rx) and it supports the Reactive Manifesto, the concepts on which the Reactive Programming is based. This post is not about the features that Spring 5 embeds. In this post we are going to discuss about a Microservice framework known as REACTO. The main aspect that distinguishes this framework from others is that its Fully FUNCTIONAL and REACTIVE...

Elastic Search with Spring PART II

1) Index creation or deletion: For Nested Type (Index name is Book) and Parent - Child Relationship (Index name is ParChild) @RequestMapping(value="/addIndex",method = RequestMethod.POST) def addBookIndex(@RequestParam(name = "indexName")String indexName){ logger.info "****** Adding Book Index: $indexName in ELASTIC DB......" def result = elasticsearchTemplate.createIndex(indexName) logger.info "****** Result is: $result " result } @RequestMapping(value="/deleteIndex",method = RequestMethod.POST) def deleteBookIndex(@RequestParam(name = "indexName")String indexName){ logger.info "****** Deleting Book Index: $indexName in ELASTIC DB......" def result = elasticsearchTemplate.deleteIndex(indexName) logger.info "****** Result is: $result " result } 2) Creating Mapping Type Whenever we save a doc...

Elastic Search with Spring

Image
ElasticSearch quite a familiar term. The first question that comes in our mind is: 1) What ElasticSearch is? & 2) Why should we use it? So to answer the first question, I would like to describe ElasticSearch as a wrapper over Apache Lucene (Apache Lucene is a high performance, text search engine library written in Java). So, ElasticSearch in its core is a distributed full-text search engine which is incredibly easy to scale (because of its well designed anatomy), returns results at a lightning speed (because of its analyzers which tokenize the texts and creates a reverse indexing just like the indexing of a book, a variety of analyzers are available), schema free in nature and supports JSON. The best part about elastic search which I experienced is all its functionalities are being exposed as REST services. ElasticSearch is a distributed NO SQL database where every input to it goes in JSON format and it has its very own way of storing data in data file...

Spring Security Oauth2 with JWT

Learning OAuth2 security protocol has always been one of my prime objectives. After integrating JWT token with Spring Security, I thought of giving a try with learning OAuth2 with Spring Security, as Spring Security provides implementation for OAuth2. To know the basics of OAuth2 I followed this. This article along with Aaron Parecki's blog really helped me in getting the concept behind this security protocol. Let's revise the components involved here: •Resource Owner •Client •Resource Server •Authorization Server and the grant types are: •Authorization Code •Implicit •Resource Owner Password Credentials •Client Credentials We have implemented both the Resource and Authorization server at the same endpoint for the sake of simplicity, however we can implement them separately too. And out of the four grant types I have been successful in experimenting with the last two only. I will try to share those experience here. I have selected JWT as...

Security with JWT Token (Spring Security)

Spring Security has always been one of my favourites which I explore often, since the time of xml configuration. This time I tried to implement Security with JWT token using Spring Security module (Java config) and I must say the java config has changed much since the time of XML configuration. Let’s chalk out the high level flow first: 1) User at first will fetch the JWT token from the URL: http://localhost:8080/SpringToken/auth by passing the user id and password in json format in the request body. We will make this URL “permit all” in Spring Security so that Spring does not enforce any authentication or authorization rule for this URL and anonymous authentication is implemented with AnonymousAuthenticationToken. This URL invokes a Handler method which generates JWT token sets it in the Security Context holder and returns it to the client. 2) The client while making subsequent request to access resources need to set the token in the request header named X-Aut...