MuleSoft Certified Integration Architect – Level 1 — Question 24
A Mule application is being designed to do the following:
Step 1: Read a SalesOrder message from a JMS queue, where each SalesOrder consists of a header and a list of SalesOrderLineltems.
Step 2: Insert the SalesOrder header and each SalesOrderLineItem into different tables in an RDBMS.
Step 3: Insert the SalesOrder header and the sum of the prices of all its SalesOrderLineltems into a table in a different RDBMS.
No SalesOrder message can be lost and the consistency of all SalesOrder-related information in both RDBMSs must be ensured at all times.
What design choice (including choice of transactions) and order of steps addresses these requirements?
Answer options
- A. 1. Read the JMS message (NOT in an XA transaction) 2. Perform EACH DB insert in a SEPARATE DB transaction 3. Acknowledge the JMS message
- B. 1. Read and acknowledge the JMS message (NOT in an XA transaction) 2. In a NEW XA transaction, perform BOTH DB inserts
- C. 1. Read the JMS message in an XA transaction 2. In the SAME XA transaction, perform BOTH DB inserts but do NOT acknowledge the JMS message
- D. 1. Read the JMS message (NOT in an XA transaction) 2. Perform BOTH DB inserts in ONE DB transaction 3. Acknowledge the JMS message
Correct answer: C
Explanation
Option C is the correct choice because it ensures that both database inserts are performed within the same XA transaction, which guarantees the atomicity and consistency of the operations. This prevents the loss of the SalesOrder message and maintains data integrity across both RDBMSs. The other options do not maintain the required consistency or may result in message loss, particularly options A and D which do not use XA transactions effectively.