Chapter 5: Testing, Debugging, and Exception Handling
Answers: b, d
A scope is needed to handle an exception within an Orchestration. To be able to catch an exception, the scope does not have to be transactional, but it must have an exception block. Transactional scopes cause additional persistence points and should be avoided if they are not needed.
Answer: a
If no exception handler is implemented, the default exception handler will trigger. The default exception handler will trigger the compensation block of any nested scopes, if they have one; therefore, a compensation block must be added to the scope to allow compensation to be made. Compensation for what happened inside the scope should be done in that scope's compensation block, not in a parent scope or an Orchestration's compensation block. Also compensating the logic should be placed in the compensation block, not an exception block.
Answer: c
Port processing halts while delivering to the
MessageBox
only. What happens after a physical Send Port processes messages matching its subscription is, by default, nothing the Orchestration is aware of. Delivery Notification can be configured to Transmitted on a logical Send Port in the Orchestration to halt the processing until the Physical Send Ports processing is successful before completing a Scope. If the physical Port fails,DeliveryFailureException
will be raised. Failed message routing routes the message in case of Port failure but does nothing to affect Orchestration processing. The Synchronized property has nothing to do with this behavior.Answer: b
For a Port to fail processing on its first attempt (immediately), the Retry Count on the Transport Advanced Options pane must be set to 0. It will then try to use the backup transport. Configuring the Retry Count or Priority of the backup transport does not affect the primary transport behavior. This scenario has nothing to do with Ordered Delivery.
Answer: c
Although there are several things that could potentially be wrong, of the possible answers only option c will affect how the message is interpreted or how it is routed and potentially solves the problem. Messages cannot be edited in the Administration Console and reconfiguring Send Port does not affect how the message is processed by the Receive Port and Pipeline.