Mule application A receives a request Anypoint MQ message REQU with a payload containing a variablelength list of request objects. Application A uses the For Each scope to split the list into individual objects and sends each object as a message to an Anypoint MQ queue.
Service S listens on that queue, processes each message independently of all other messages, and sends a response message to a response queue.
Application A listens on that response queue and must, in turn, create and publish a response Anypoint MQ message RESP with a payload containing the list of responses sent by service S in the same order as the request objects originally sent in REQU.
Assume successful response messages are returned by service S for all request messages.
What is required so that application A can ensure that the length and order of the list of objects in RESP and REQU match, while at the same time maximizing message throughput?
- A: Perform all communication involving service S synchronously from within the For Each scope, so objects inRESP are in the exact same order as request objects in REQU
- B: Use a Scatter-Gather within the For Each scope to ensure response message orderConfigure the Scatter-Gather with a persistent object store
- C: Keep track of the list length and all object indices in REQU, both in the For Each scope and in allcommunication involving service. Use persistent storage when creating RESP
- D: Use an Async scope within the For Each scope and collect response messages in a second For Eachscope in the order in which they arrive, then send RESP using this list of responses