Hi Myrle, Yes by Queues, I meant JMS implementation something like ActiveMQ. I will go through the document mentioned by you and will collect the questions that may arise.
On Tue, Mar 13, 2018 at 2:07 PM, Myrle Krantz <my...@apache.org> wrote: > Hey Rahul, > > Alot of what you list here has already been done. Check out the > overview of the libraries here: > https://cwiki.apache.org/confluence/display/FINERACT/ > Fineract+CN+Project+Structure#FineractCNProjectStructure-Libraries > > The ones most relevant to what you describe are fineract-cn-api, and > fineract-cn-lang. > > It's unclear what you mean by Queues, but possibly you mean a JMS > implementation something like ActiveMQ. The fineract-cn-command > library does all of that integration via the @EventEmitter annotation. > There may be one case in which, because of a need for synchronous > returns, a service needs to do this directly, but it's extremely rare. > If you look in the component-tests for the listeners, you can see an > example of listening to for those events. > > Our DTO's are json as serialized from Java objects via gson. Some of > the selection of a serializer, as well as some standardized exception > handling can be found in fineract-cn-api. > > Connection configurations for cassandra are defined in > fineract-cn-cassandra, and for similarly mariadb, fineract-cn-mariadb. > > I suggest you take a stroll through those projects and familiarize > yourself with them a bit. There's a serious lack of documentation, so > do collect your questions along the way and we can turn them into a > FAQ, and improved documentation. > > Best Regards, > Myrle > > > On Mon, Mar 12, 2018 at 4:15 PM, Rahul Goel <rahul.usi...@gmail.com> > wrote: > > Hi, > > > > We have moved on to microservices design in FINERACT CN. > > In microservices, each service may talk to multiple microservices in > order > > for its functioning. > > Following two libraries can be built and be imported by each > microservice. > > Details of these are as follows. > > > > fineract-util-lib > > > > Functionality It may include: > > > > request-id -> on each API request, a request-id(UUID) will be generated > if > > not present already. It will be added to each API call to or from a > > microservice. For example microservice A calls microservice B, > microservice > > B calls microservice C, each request will contain a common request-id > > header. This will help in easy debugging of flow and bugs. A single > > request-id will be present across all subsequent calls. > > Basic connection configurations like database connections. redis > connections > > etc. > > Standardisation of logs across services, this util will provide standard > > logging functions. > > Standardization of request and responses -> A wrapper can be written over > > Rest client like RestTemplate which is used for API calls across > services. > > It will standardize our Request and Response Objects, auto > > wrapping/unwrapping responses in pre-defined JSONs. > > Exception Handling -> Instead of throwing of different exceptions from > each > > service, some common exceptions like BAD_REQUEST, RESOURCE_NOT_FOUND, a > > standard exception handling can be done, which will wrap exceptions and > > throw JSON in predefined formats. Even case of internal server errors > this > > library function will wrap exception in pre-defined formats. Also, we can > > add some sort of additional exception code in Response which can be used > > alongside HTTP status code. > > Pre-defined JSON will ease out consumers/UI developer, thereby reducing > > their effort of handling multiple responses.They will have to deal with > only > > single response in case of success and failure both. For Example > Exception > > Response : { result : {}, httpStatusCode : 401, error : {errorMessage : > > "Authentication Exception", exceptionCode : "AUTH101"}}, Result Response > : { > > result : {id : 123, name : "Rahul"}, httpStatusCode : 200, error : null} > > Implementing Queues and providing various functions like > publishToQueue(), > > publishToQueueAsync() etc. > > This may contain some basic integrations with other services like > SMS/EMAIL > > service. It will provide direct methods to send SMS/EMAILs thereby > reducing > > the effort of each microservice developer of integrating SMS/EMAIL > service > > and doing exception handling. > > Apart from these, this util can contain some basic methods like string > > parsing methods, some validation methods etc. > > > > fineract-models > > > > Functionality It may include: > > > > Since our code base is in JAVA and JAVA is strongly typed, Each > microservice > > developer will be writing DTO(DATA TRANSFER OBJECT) for its individual > API > > and for consuming responses from other services. > > We can add all DTOs classes to a common library. This will reduce > chances of > > errors while consuming responses from other microservices, also reducing > > effort of the developer in writing same DTO classes again and again in > each > > different microservices. > > By doing this, we will be ensuring strong contracts between APIs and will > > also be reducing development effort and time. > > > > > > We can add these two library ideas as part of our GSOC projects for the > year > > 2018. > > > > Please feel free to share your thoughts and feedback on above proposal. > > > > > > -- > > RAHUL GOEL > > > -- RAHUL GOEL +91-9873124753