nerdexam
SOA

S90-09A · Question #7

Service A is a task service that is required to carry out a series of updates to a set of databases in order to complete a task. To perform the database updates Service A must interact with three…

The correct answer is D. None of the above. Option D is correct because none of the three options, as stated, fully solves the problem of distributed atomicity across the composition. The correct solution - a Compensating Service Transaction - requires architectural changes to all participating services, not just Service…

Enterprise Integration Patterns

Question

Service A is a task service that is required to carry out a series of updates to a set of databases in order to complete a task. To perform the database updates Service A must interact with three other services, each of which provides standardized data access capabilities. Service A sends its first update request message to Service B (1), which then responds with a message containing a success or failure code (2). Service A then sends its second update request message to Service C (3), which also responds with a message containing a success or failure code (4). Finally, Service A sends a request message to Service D (5), which responds with its own message containing a success or failure code (6). You've been given a requirement that all database updates must either be completed successfully or not at all. This means that if any of the three response messages received by Service A contain a failure code, all of the updates carried out until that point must be reversed. Note that if Service A does not receive a response message back from Services B, C, or D, it must assume that a failure has occurred. How can this service composition architecture be changed to fulfill these requirements?

Exhibit

S90-09A question #7 exhibit

Options

  • AThe Reliable Messaging pattern can be applied to guarantee the delivery of positive or negative
  • BThe Atomic Service Transaction pattern can be applied individually to Services B, C, and D so that
  • CThe Compensating Service Transaction can be applied to Service A so that when any one
  • DNone of the above.

How the community answered

(25 responses)
  • A
    4% (1)
  • B
    24% (6)
  • C
    12% (3)
  • D
    60% (15)

Explanation

Option D is correct because none of the three options, as stated, fully solves the problem of distributed atomicity across the composition. The correct solution - a Compensating Service Transaction - requires architectural changes to all participating services, not just Service A; Services B, C, and D must each expose compensating (rollback) operations, and Service A must invoke those compensation calls in reverse order when a failure occurs.

Option A is wrong because the Reliable Messaging pattern only guarantees message delivery (preventing lost messages); it does nothing to reverse already-completed database updates when a downstream failure occurs.

Option B is wrong because applying the Atomic Service Transaction pattern individually to B, C, and D ensures each service's own operation is atomic in isolation - it does not coordinate a single atomic boundary spanning all three services together.

Option C is wrong as stated because while the Compensating Service Transaction is the right pattern family, applying it only to Service A is insufficient - the compensating logic requires B, C, and D to also be changed to support and expose dedicated rollback/undo operations.

Memory tip: For distributed rollback questions, ask "which services need to change?" - if an answer modifies only the orchestrator but leaves the participant services unchanged, it can't achieve true distributed atomicity, so lean toward "None of the above."

Topics

#Atomic Service Transaction#Compensating Service Transaction#distributed transaction#failure handling

Community Discussion

No community discussion yet for this question.

Full S90-09A Practice