June 21, 2024

Middleware Technologies 2024 Q&A

Share :

Middleware Technologies Question and Answer

(Suggest Find the question by search page and keep refreshing the page for updated content)

Q.1) What is significance of the following strategies for Enterprise Application Integration
a. Point to point Integration
b. Bus Integration

Answer :

a. Point-to-Point Integration Significance:

  1. Simplicity and Speed of Implementation: Point-to-point integration is straightforward and quick to set up. It involves direct connections between systems, which can be established relatively easily without the need for intermediary layers or middleware.
  2. Custom Fit: Each integration is custom-tailored to the specific requirements of the two systems involved. This allows for optimized performance and precise functionality based on the needs of the connected applications.
  3. Cost-Effective for Small Setups: For organizations with a limited number of applications or integrations, point-to-point can be cost-effective. There’s no need for investing in a complex integration platform.

b. Bus Integration Significance:

  1. Scalability and Flexibility: Bus integration, often implemented using an Enterprise Service Bus (ESB), allows for a scalable architecture. New applications can be added or removed with minimal impact on the existing system since they connect to a central bus rather than to each other directly.
  2. Centralized Management: An ESB provides a centralized platform for managing integrations, making it easier to monitor, troubleshoot, and maintain the system. This reduces the complexity compared to managing numerous point-to-point connections.
  3. Standardization and Reusability: The use of standardized interfaces and protocols in bus integration promotes consistency. Services can be reused across different applications, enhancing efficiency and reducing redundancy.
  4. Enhanced Functionality: ESBs often come with additional features such as message routing, transformation, and protocol conversion, enabling more sophisticated integration scenarios and business process automation.

Q.2) Consider is a situation where an online grocery store in your town invites you to design to how will you propagate the address change an IT solution for them. One of the important parts of in solution a separate Publish Subscribe channel?


Designing an IT solution to handle address changes for an online grocery store involves several steps, including the use of a Publish-Subscribe (Pub-Sub) messaging pattern to ensure that all relevant systems are notified and updated with the new address information. Here’s a comprehensive approach to this solution:

1. Identify the Requirements

  • Address Change Trigger: Determine what will trigger an address change (e.g., user input, customer service update).
  • Systems to Notify: Identify all systems that need to be updated when an address changes (e.g., billing, shipping, customer service, delivery).
  • Consistency and Reliability: Ensure that the address change is consistently propagated to all systems without data loss.

2. Design the Pub-Sub Architecture


  • Publisher: The component that detects and publishes the address change event.
  • Message Broker: The Pub-Sub infrastructure (e.g., Kafka, RabbitMQ, AWS SNS) that handles the distribution of messages.
  • Subscribers: Various systems or services that need to be updated with the new address information.


  1. Address Change Detection:
    • When an address change is detected (e.g., through a web form submission), the Publisher component creates an address change event.
  2. Publish Event:
    • The Publisher sends this event to the Message Broker.
  3. Distribute Event:
    • The Message Broker receives the event and distributes it to all registered subscribers.
  4. Update Subscribers:
    • Each subscriber receives the address change event and updates its records accordingly.

3. Implement the Components


  • A microservice or module within the customer management system that listens for address changes.
  • When an address change is detected, it formats the change into an event message (e.g., JSON) and publishes it to the Message Broker.

Message Broker

  • Choose a reliable Message Broker that supports Pub-Sub patterns. Options include Apache Kafka, RabbitMQ, AWS SNS, Google Cloud Pub/Sub.
  • Configure the Message Broker to handle address change events and manage subscriptions.


  • Each system that needs the updated address information (e.g., Billing System, Shipping System, Customer Service System) implements a subscriber.
  • The subscriber connects to the Message Broker, listens for address change events, and updates its records when an event is received.

4. Ensure Data Integrity and Consistency

  • Idempotency: Ensure that subscribers handle duplicate messages gracefully.
  • Error Handling: Implement robust error handling and retries in case of message delivery failures.
  • Logging and Monitoring: Use logging and monitoring to track the propagation of address changes and detect any issues.

5. Testing and Deployment

  • Integration Testing: Test the entire workflow from address change detection to updates in all subscriber systems.
  • Performance Testing: Ensure the system can handle the expected load, especially during peak times.
  • Deployment: Deploy the Publisher, Message Broker, and Subscriber components, ensuring minimal disruption to existing services.

Q.3) ABC consulting Firm hired you as an Application Architect. You must design a system which follows middleware technologies to achieve the final goal of the Enterprise product. You may use CORBA, Application server, Message oriented middleware (MOM) to accomplish the product requirement. In such a situation compare the above middleware technologies in questionnaire raised by customer as follows
a. What happens if new platform is introduced?
b. What happens if licensing cost of a technology rise drastically due to change in pricing policy?
c. What happens if database technology changes?


a. What happens if a new platform is introduced?

  • CORBA: CORBA (Common Object Request Broker Architecture) provides a platform-independent middleware solution. If a new platform is introduced, CORBA’s interoperability ensures that the existing components can communicate seamlessly with the new platform. However, there might be some integration effort required to ensure compatibility with the new platform’s specifications.
  • Application Server: Application servers often abstract away platform-specific details, providing a layer of insulation from underlying platform changes. They typically support multiple platforms, and if a new platform is introduced, the application server vendor may release updates or patches to support it. However, there might still be a need for compatibility testing and adjustments in the application code.
  • Message-Oriented Middleware (MOM): MOM systems generally operate independently of underlying platforms. They focus on asynchronous communication between distributed systems. Thus, if a new platform is introduced, the MOM system should be able to integrate with it with minimal disruption, as long as the messaging protocols are supported on the new platform.

b. What happens if the licensing cost of a technology rises drastically due to a change in pricing policy?

  • CORBA: CORBA implementations might have licensing costs associated with them, depending on the vendor. If the licensing cost rises drastically, it could significantly impact the project’s budget. In such a scenario, the organization might explore alternative CORBA implementations or consider migrating to a different middleware solution.
  • Application Server: Application servers typically come with licensing costs, and a drastic rise in pricing could pose budgetary challenges. Organizations might explore negotiating with the vendor, considering alternative application server solutions, or even transitioning to open-source application servers to mitigate the cost increase.
  • Message-Oriented Middleware (MOM): MOM systems may also have licensing costs, but they tend to be more focused on messaging infrastructure rather than comprehensive middleware solutions like CORBA or application servers. A drastic rise in licensing costs could prompt the organization to evaluate alternative MOM solutions, including open-source options, or reassess the architecture to minimize reliance on proprietary middleware.

c. What happens if the database technology changes?

  • CORBA: CORBA itself does not directly interact with databases. However, CORBA-based applications may rely on database access. If the database technology changes, the CORBA application would need to ensure compatibility with the new database technology through appropriate database drivers and configurations.
  • Application Server: Application servers often provide database connectivity and abstraction layers. If the database technology changes, the application server vendor may release updates or patches to support the new database technology. However, there might still be a need for testing and possibly code modifications to ensure compatibility.
  • Message-Oriented Middleware (MOM): MOM systems typically do not directly interact with databases but focus on messaging between applications. However, applications using MOM may interact with databases. If the database technology changes, the application using MOM would need to ensure compatibility with the new database technology, similar to CORBA-based applications.

Q.4) What are the implications of message system management on the performance and reliability of a distributed application. Include considerations for both message queuing and broker management.


Message system management plays a critical role in the performance and reliability of distributed applications, particularly when considering both message queuing and broker management. Here are some key implications:

  1. Performance Efficiency:
    • Message Queuing: Efficient message queuing ensures that messages are delivered promptly to their destinations. If the queuing system is slow or inefficient, it can lead to delays in processing messages, impacting overall application performance.
    • Broker Management: Brokers are responsible for routing messages between producers and consumers. Optimal broker management ensures that brokers are appropriately scaled and distributed to handle message traffic efficiently. Poorly managed brokers can become bottlenecks, causing delays and reducing performance.
  2. Scalability:
    • Message Queuing: A well-managed message queuing system should be able to scale horizontally to accommodate increasing message volumes. Scalability ensures that the system can handle growing loads without sacrificing performance.
    • Broker Management: Effective broker management involves dynamically scaling brokers based on workload demands. This ensures that the system can adapt to changing traffic patterns and maintain optimal performance levels even under high loads.
  3. Reliability:
    • Message Queuing: Reliable message queuing ensures that messages are not lost or duplicated during transit. Proper message acknowledgment mechanisms and fault-tolerant message storage are essential for maintaining reliability.
    • Broker Management: Robust broker management includes strategies for high availability and fault tolerance. Redundancy and failover mechanisms help ensure continuous message delivery even in the event of broker failures.
  4. Message Delivery Guarantees:
    • Message Queuing: Depending on the application requirements, message queuing systems may need to provide different delivery guarantees such as at-most-once, at-least-once, or exactly-once delivery semantics. Implementing and managing these guarantees correctly is crucial for maintaining data consistency and reliability.
    • Broker Management: Brokers must enforce the specified delivery guarantees and ensure that messages are delivered according to the desired semantics. Mismanagement of brokers can lead to message loss or duplication, violating delivery guarantees and compromising application integrity.
  5. Monitoring and Management:
    • Message Queuing: Effective monitoring tools and management practices are essential for identifying performance bottlenecks, monitoring queue depths, and detecting anomalies in message processing. Proactive management helps prevent issues before they impact application performance.
    • Broker Management: Continuous monitoring of broker health and performance metrics is necessary for proactive management. Automated scaling and resource allocation based on real-time metrics can help optimize broker utilization and ensure reliable message processing.

Q.5) In BITS L&D division, the process of program registration requires student to be registered to the respective courses in the semester Student Interface will carry the required information to process by communicating with the Course interface. Application model should consider the course strength before confirming the enrollment process. Application model should also validate the required points for obtaining the graduation Consider the below object model for the Application module and write down the IDL code for the respective modules.


Based on the provided image and description, we need to write the IDL (Interface Definition Language) code for the respective modules in the application model for program registration.

The object model involves two main classes:
1. `Student`
2. `Course`

Here’s the IDL code that corresponds to the provided object model:

module BITS {
interface Student {
attribute string personalInfo;
attribute string major;

void enroll(in Course course);
void graduate();

interface Course {
attribute string subject;
attribute string semester;

boolean register(in Student student);
void cancel(in Student student);

interface Registration {
boolean registerStudent(in Student student, in Course course);
void validateGraduation(in Student student);

### Explanation:
1. **Student Interface:**
– **Attributes:**
– `personalInfo`: A string attribute to store personal information of the student.
– `major`: A string attribute to store the major of the student.
– **Operations:**
– `enroll(Course course)`: Method for enrolling the student in a course.
– `graduate()`: Method for graduating the student.

2. **Course Interface:**
– **Attributes:**
– `subject`: A string attribute to store the subject of the course.
– `semester`: A string attribute to store the semester information of the course.
– **Operations:**
– `register(Student student)`: Method for registering a student in the course. Returns a boolean indicating success.
– `cancel(Student student)`: Method for canceling a student’s registration in the course.

3. **Registration Interface:**
– This interface provides additional functionalities:
– `registerStudent(Student student, Course course)`: Method for registering a student for a course. This would handle the logic of checking the course strength before confirming enrollment. Returns a boolean indicating success.
– `validateGraduation(Student student)`: Method for validating the required points for obtaining graduation.

This IDL defines the interfaces required to model the application module for program registration, capturing the necessary attributes and operations for students and courses, along with additional registration validation logic.

Q.6) An application is using Messaging system to perform a Request-Reply and has received a reply message as in the figure shown. How does a requestor that has received a reply know which request this is the reply for? Explain about the response message format and its details [hint correlation Identifier]


The issue depicted in the image involves a requestor that has received a reply message but cannot determine which request the reply corresponds to. This is a common problem in messaging systems that use the Request-Reply pattern. The solution to this problem is the use of a Correlation Identifier.

Correlation Identifier

A Correlation Identifier is a unique identifier added to the request message and then included in the reply message. This allows the requestor to match each reply to the corresponding request.

How It Works:

  1. Request Message:
    • When the requestor sends a request message, it includes a unique identifier, known as the Correlation ID, in the message header or metadata.
    • This Correlation ID can be a unique string or a UUID that is generated for each request.
  2. Reply Message:
    • The replier processes the request and generates a reply message.
    • The reply message includes the same Correlation ID that was in the request message. This ensures that the reply can be matched to the correct request.
  3. Requestor Receives Reply:
    • Upon receiving the reply, the requestor checks the Correlation ID in the reply message.
    • By comparing the Correlation ID with the IDs of outstanding requests, the requestor can determine which request the reply corresponds to.

Message Format:

  • Request Message Format:
    • Header: Contains metadata, including the Correlation ID.
    • Body: Contains the actual request data.
  • Reply Message Format:
    • Header: Contains metadata, including the same Correlation ID as in the request message.
    • Body: Contains the actual reply data.


Request Message:

Correlation ID: 12345
Request Data: { "operation": "getData", "parameters": {...} }

Reply Message:

Correlation ID: 12345
Reply Data: { "result": "data", "status": "success" }

In the given image:

– The “Requests” section shows the flow of request messages from the requestor to the replier.
– The “Replies” section shows the flow of reply messages back to the requestor.
– The problem is indicated by “Cannot Match Reply to Request,” which signifies that the reply message does not have a correlation mechanism to link it back to the original request.

To solve this, the requestor should implement a Correlation Identifier in both the request and reply messages as explained above. This ensures that every reply message can be matched to its corresponding request, thereby eliminating the issue of unmatched replies.

For More Updates Join Our Channels :