Messaging Gateway for REST to JMS Protocol Translation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In distributed computing systems, especially cloud-based and on-premise systems, the traditional synchronous communication protocols are unsuitable due to uncertainty in the availability of message-consuming components, limiting scalability and reliability for components that only support specific messaging APIs like HTTP REST, which are not supported by existing messaging middleware.
Innovation Solution
A gateway service is introduced that enables communication between producing and consuming components using unsupported APIs like REST or SOAP, by propagating messages through messaging middleware using supported APIs like JMS, ensuring high-availability asynchronous messaging by dynamically managing listeners and handling message delivery failures.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If messaging middleware uses supported APIs like JMS for asynchronous messaging, then reliability and scalability are improved, but components using unsupported APIs like REST cannot communicate
Solution Approach 1:
The gateway service acts as an intermediary component between RESTful web services and messaging middleware. It receives HTTP REST requests from web services, translates them into JMS messages, and forwards them to the messaging middleware. This mediator enables components using unsupported APIs to communicate reliably through the messaging infrastructure without requiring the components themselves to support multiple messaging protocols.
Solution Approach 2:
The gateway service performs parameter transformation by converting HTTP request parameters and response formats into JMS message structures. It maps REST API parameters to corresponding JMS message fields, transforming the communication protocol parameters while preserving the semantic meaning of the data being exchanged between heterogeneous components.
2Device complexity
If synchronous communication protocols are used for direct component communication, then simplicity is maintained, but availability cannot be assured in distributed systems
Solution Approach 1:
The communication architecture is segmented into three independent layers: the web service layer using simple HTTP REST protocols, the gateway translation layer handling protocol conversion, and the messaging middleware layer providing reliable asynchronous delivery. This segmentation allows each layer to operate independently with appropriate complexity, maintaining simplicity at the component level while ensuring reliability through the messaging infrastructure.
3Ease of operation
If Web services only support HTTP REST APIs, then ease of operation is improved, but asynchronous messaging capabilities are limited
Solution Approach 1:
The gateway service automatically performs protocol translation and message routing without requiring modifications to existing Web services. Web services continue to operate using their familiar HTTP REST interfaces, while the gateway self-services the translation to JMS format, enabling asynchronous messaging capabilities to be added to the system without disrupting existing Web service operations.
Data Source
AI summary
A system includes reception, at a first computing node in a cluster of computing nodes, of a request to subscribe to a first message queue of a messaging middleware software component, determination, at the first computing node, of a preferred number of computing nodes of the cluster of computing nodes to listen to the first message queue, determination, at the first computing node and based on data stored in a shared database accessible to each computing node of the cluster, a current number of computing nodes of the cluster which are listening to the first message queue, and, based on a difference between the preferred number and the current number, sending one or more requests to the messaging middleware software component to associate one or more of the computing nodes of the cluster with the first message queue.


