@Override
    protected Output createOutput() {
        try {
            startTimeMs = System.currentTimeMillis();
            validateElementProperties();
            final AttributeMap effectiveAttributeMap = httpHeadersIncludeStreamMetaData
                    ? cloneFromStreamMeta()
                    : new AttributeMap();

            addAttributeIfHeaderDefined(effectiveAttributeMap, httpHeadersUserDefinedHeader1);
            addAttributeIfHeaderDefined(effectiveAttributeMap, httpHeadersUserDefinedHeader2);
            addAttributeIfHeaderDefined(effectiveAttributeMap, httpHeadersUserDefinedHeader3);

            LOGGER.info(() -> "createOutputStream() - " + forwardUrl + " Sending request " + effectiveAttributeMap);


            final HttpTlsConfiguration httpTlsConfiguration = HttpClientUtil
                    .getHttpTlsConfiguration(sslConfigBuilder.build());
            final HttpClientConfiguration.Builder builder = HttpClientConfiguration.builder();
            builder.tlsConfiguration(httpTlsConfiguration);

            if (timeout != null) {
                builder.timeout(StroomDuration.ofMillis(timeout.intValue()));
            }
            if (connectionTimeout != null) {
                builder.connectionTimeout(StroomDuration.ofMillis(connectionTimeout.intValue()));
            }
            if (connectionRequestTimeout != null) {
                builder.connectionRequestTimeout(StroomDuration.ofMillis(connectionRequestTimeout.intValue()));
            }
            if (timeToLive != null) {
                builder.timeToLive(StroomDuration.ofMillis(timeToLive.intValue()));
            }

            final HttpClientConfiguration httpClientConfiguration = builder.build();
            if (LOGGER.isDebugEnabled()) {
                requestProperties.clear();
            }

            currentPath = tempDirProvider.get().resolve("HTTPAppender-" + UUID.randomUUID());
            final FilterOutputStream outputStream = new FilterOutputStream(
                    new BufferedOutputStream(Files.newOutputStream(currentPath))) {
                @Override
                public void close() throws IOException {
                    super.close();
                    postFile(httpClientConfiguration, currentPath, effectiveAttributeMap);
                }
            };
            return outputStreamSupport.create(outputStream, effectiveAttributeMap);
        } catch (final IOException e) {
            LOGGER.debug(e::getMessage, e);
            throw new UncheckedIOException(e);
        } catch (final RuntimeException e) {
            LOGGER.debug(e::getMessage, e);
            throw e;
        }
    }
Handler class that forwards the request to a URL.
stroom-pipeline/src/main/java/stroom/pipeline/writer/HTTPAppender.java