Exciting news to share! We are launching a new MuleSoft Online Group dedicated to introducing Java Developers to the MuleSoft world.
Our goal is much more than just advocating MuleSoft! Through our events and blog posts, we will be demonstrating how developers could leverage their previous experiences and apply them to the MuleSoft tech. We also aim to guide Java Developers worldwide who would like to pivot their careers and start a new chapter in their professional life.
Starting from this article, I, Guilherme Pereira, a MuleSoft Ambassador and Senior Integration Consultant at Infomentum, will be sharing some of my experiences with you. My career as a Java Developer started way back in 2008; I often had to be creative to find ways to speed up my work and provide more consistency and reliability for my integrations. A lot of what was missing I found in MuleSoft, and I quickly became a fan, and now also a Certified Developer and Architect.
Working on integration developments is always challenging, irrespective of the language or platform you are using. Some requirements may lead you to have to look for creative options to achieve your goals, which can be a fun way to test your creativity, but it's good to know there is also an easy solution, for example:
Scatter-gather in Java
At the start of my career in late 2008, I was working in a development team that was tasked to integrate a travel platform system with one of the multiple airlines. For this specific use case, we had to implement the scatter-gather pattern, which allows us to send the same request to numerous sources and then collect the responses and aggregate the results.
The first version was built manually using threads and schedulers and during the course, we look to incorporate a new framework to provide this pattern to our implementation like Apache Camel and Spring. Still, it required the team to add a new stack to the development, learn about it and implement it. The main concern was incorporating this knowledge on the fly without any previous experience and using this new lib properly without bringing any side effects to the application. And finally, it would generate extra efforts for the team who might be focused to extend the application with new features for the customers.
Scatter-gather in MuleSoft
This is a no-brainer in MuleSoft, as it provides a standard Scatter-Gather router to implement this pattern. You just need to drop the component, define your routers, and the Mule Engine will handle the hard work behind the scenes for you: threads, timeout and aggregation, etc. All of this without writing even one line of code, just dragging and dropping the component to the flow.
Mule offers a powerful execution engine based on reactive and non-blocking architecture, simplifying the development and boosting the APIs' performance. You don't need to take care, for example, of thread allocation. Mule offers a unified thread pool capable of autotune depending on the available resources and will use this to manage everything you need to run your solution with max performance and efficiency.
Scatter-gather in MuleSoft
Integrating with third-party systems
Another great benefit of MuleSoft is the connectors. They play a significant role when building our integrations because they provide a faster way to connect and integrate with third-party systems with less friction. MuleSoft offers hundreds of these pre-built connectors, and if what you are looking for is not available, you can also build one of your own leveraging the Mule SDK.
In my previous experiences working with Java development, it was part of the routine to integrate multiple third-party systems consuming SOAP or REST APIs. The first thing you probably do is generate the client stubs to consume these APIs in our code, implement the authentication method and finally consume the API. In most cases, we also need to create some feature to reuse tokens generated by the authentication method to reuse them in our implementation. You are aware that this might be massive work, and in most cases, we never reuse it.
During the implementation, we can have different scenarios: orchestration, enrichment, call several operations in sequence, or consume the data and transform it. Despite the scenario, we always need to understand the data from the third party to handle it in our implementation. Even for simple ones like consuming and transforming data, we might suffer a little bit to achieve it depending on the number of transformations we need to apply and how we handle the output. Example: Output as JSON, XML, CSV or a Flat-File?
This stuff can be easily handled using MuleSoft Connectors like Salesforce or other hundreds of available. The connectors will remove the repetitive tasks like generating a client stub, exposing the operations to be consumed within the connector, and giving you a connection handler that you can use to manage your tokens and reuse them in your integration flows. The development is simple, just drag and drop the desired operation to your flow, configure the connection and it's done; you are ready to create your integration.
DataWeave is the powerful transformation language that will allow you to handle inbound and outbound data to the connector. No matter how complex your data structure is, DataWeave will help you implement the transformations and provide the correct output data for your needs.
Salesforce Connector in MuleSoft makes even a complex integration quick and easy!
These are just a couple of sample challenges I have experienced during the years, and I'm sure that most of you have also faced and managed them. My objective is to bring similarities from the developing perspective to this discussion and how these tasks can be managed in a simple manner allowing you to focus on your business requirements. Let Mule handle the hard work and tedious tasks, enabling you to be more productive in your development.
Would you like to find out more about how you can utilise your Java expertise in MuleSoft?