This is a series of posts in which I share my experience building a very basic Message-oriented middleware for my end-year project at university. It presents the design of the system and shows it's source code.
Through this project, I want to provide an infrastructure that enables enterprises to implement integration solutions for their systems. Here, by integration I mean communication between different applications of an enterprise. More specifically, This communication follow the messaging integration style.
Warning: This is my first attempt building this kind of project, therefore, you should not take anything here as best practice or the right way to do things unless it's stated with a reference. It's best to consider this as a prototype. Moreover, it was for university so many design decision was taken with that in mind.
In Part I, we will present the architecture of the system and introduce it's main components(Messaging model, protocol, modules...) along with the frameworks/tools we will be using. This is more like a general overview of what we are going to work on.
In Part II, we give a short introduction on Seastar then we start coding our "server", the main entry point of our application. And finally we show how to compile the project.
Part III of this series is on the Messaging Model designed for the MOM. Questions like what is it, why do we need one... will be explored. Also, in this part, we show the implementation of Mess. Model.
Part IV will discuss Moza protocol(weird name I know). Here we will present the protocol, explain it and show the structure of it's PDUs. Moreover, we will implement a cli to interact with our MOM.
Note: I am not sure if this is all I want to write so I may add other parts.
I hope that this series will be helpful and informative for many of you. Specially the protocol section and the use of Seastar. You should note that I didn't use the full potential of Seastar in this first version but I plan to make changes that will improve the performance.
To conclude, I would like to thank god that without him none of this(projects, posts, my C++, name it ...) would had happened. Also, I want to give a special thank you message to: Matt Godbolt for the great discussions we had (either on this project or other cppish things), bjarne stroustrup for C++, Alexander Stepanov for STL and EoP, Sean Parent for his talks, Jon Kalb for Cppcon and the c++ committee for working on making C++ a better language.