aeron-archive/src/main/java/io/aeron/archive/client/AeronArchive.java
public long startRecording(final String channel, final int streamId, final SourceLocation sourceLocation)
    {
        lock.lock();
        try
        {
            ensureOpen();

            final long correlationId = aeron.nextCorrelationId();

            if (!archiveProxy.startRecording(channel, streamId, sourceLocation, correlationId, controlSessionId))
            {
                throw new ArchiveException("failed to send start recording request");
            }

            return pollForResponse(correlationId);
        }
        finally
        {
            lock.unlock();
        }
    }
public long startRecording(final String channel, final int streamId, final SourceLocation sourceLocation)
    {
        lock.lock();
        try
        {
            ensureOpen();

            final long correlationId = aeron.nextCorrelationId();

            if (!archiveProxy.startRecording(channel, streamId, sourceLocation, correlationId, controlSessionId))
            {
                throw new ArchiveException("failed to send start recording request");
            }

            return pollForResponse(correlationId);
        }
        finally
        {
            lock.unlock();
        }
    }
Start recording a channel and stream pairing.
<p>
Channels that include sessionId parameters are considered different than channels without sessionIds. If a
publication matches both a sessionId specific channel recording and a non-sessionId specific recording, it will
be recorded twice.

@param channel        to be recorded.
@param streamId       to be recorded.
@param sourceLocation of the publication to be recorded.
@return the subscriptionId, i.e. {@link Subscription#registrationId()}, of the recording.