def METHOD_NAME(self, request, correlation_id=None):
    """Encode and queue a kafka api request for sending.
    Arguments:
        request (object): An un-encoded kafka request.
        correlation_id (int, optional): Optionally specify an ID to
            correlate requests with responses. If not provided, an ID will
            be generated automatically.
    Returns:
        correlation_id
    """
    log.debug('Sending request %s', request)
    if correlation_id is None:
        correlation_id = self._next_correlation_id()
    header = request.build_request_header(correlation_id=correlation_id, client_id=self._client_id)
    message = b''.join([header.encode(), request.encode()])
    size = Int32.encode(len(message))
    data = size + message
    self.bytes_to_send.append(data)
    if request.expect_response():
        ifr = (correlation_id, request)
        self.in_flight_requests.append(ifr)
    return correlation_id