A request-response API lets one service send a request and receive a corresponding reply. It contrasts with event-driven communication, where services communicate by triggering events. Kafka can support this pattern, but it is identified as a poor match compared with its strengths in asynchronous microservice communication. section 1.9 section 7.0
The requester must correlate each reply with its request and ensure that the reply returns to the service instance that sent it. A correlation ID in the message header provides the match. Failures complicate recovery: a replacement consumer may receive the partition without the original request context and therefore cannot process the response correctly. section 7.1.2 section 7.1.2
Correlated response flow
A requester sends a message with a CORRELATION_ID header and expects the responder to echo it in the response. The message may also identify the response topic and partition, allowing the responder to route the reply to the intended service instance. section 7.1.2 section 7.1.2
Figure 7.6 The availability of RequestResponseService is problematic, as another instance does not have the original request context.
Shows why request-response availability is difficult when another service instance lacks the original request context after failure. section 7.1.2

