Message Oriented Middleware (MOM) component is responsible for inter-component communication with the SmartCLIDE platform. The MOM is designed and implemented as a message broker which is a piece of software that enables applications, services, and systems to communicate with one another to exchange information . This communication is achieved by translating messages between formal messaging protocols, allowing independent services written in different languages or implemented in various platforms to interact with each other.
SmartCLIDE’s MOM component offers standardized means of handling the data flow between the components of the SmartCLIDE platform. Thus, developers using the SmartCLIDE platform can focus on the core logic of the application. MOM can validate, route, store, and deliver messages to the appropriate destinations, allowing senders to issue messages without knowing where the receivers are and whether they are active or not, thus facilitating the decoupling of services and processes within systems.
There are several message brokers available, with popular choices being Apache Kafka and RabbitMQ. For the implementation of the MOM component, we have used the official RabbitMQ Docker image  in order to run the RabbitMQ server inside a Docker container. This is the easiest way to have a RabbitMQ instance up and running and enhances portability. For making RabbitMQ available to the other SmartCLIDE components, we have set up a RESTful API with the help of Spring Boot, thus offering HTTP access to the message broker.
MOM component diagram is presented in the next diagram. The MOM component resides in the center of the system architecture and comprises three sub-components, namely the Message Checker, the Message Transformer, and the Message Router. The Message Checker is the first point of interaction when communicating with the MOM component and verifies the validity of the incoming/outcoming messages while the actual routing of the messages is implemented by the Message Router sub-component. The Message Transformer modifies each message accordingly so that it can be parsed at both ends (publisher and consumer).
|Message Checker||MoM will be able to check if the exchanged messages, either at the sender’s or at the receiver’s end, comply with a specific format.|
|Message Transformer||MoM will transform the data/messages from the sender’s native format to the receiver’s native format.|
|Message Router||MoM should support several message routing policies and message delivery guarantees (e.g., at-most-once, and exactly-once).|
If you wish to learn more about this aspect of the SmartCLIDE project, we invite you to read the public deliverable entitled “D3.1 – Early SmartCLIDE Cloud IDE Design“.
-  “What are Message Brokers?,” Aug. 11, 2021. https://www.ibm.com/cloud/learn/message-brokers (accessed Sep. 04, 2021).
-  “Rabbitmq – Official Image | Docker Hub.” https://hub.docker.com/_/rabbitmq (accessed Sep. 06, 2021).