The Kafka protocol guide mentions that each request and response contains a correlationId which is a user-supplied integer to match requests and corresponding responses. However, when I look at the code in the class AbstractResponse, we have a method defined as following:
public Send toSend(String destination, RequestHeader requestHeader) { return toSend(destination, requestHeader.apiVersion(), requestHeader.toResponseHeader()); } So basically we are just using the requestHeader to generate the responseHeader so doesn't this pretty much guarantees that the correlationId for the Request and the Response would always be the same, or am I missing something?