public static void main(final String[] args) throws Exception {
        try (final CloseableHttpClient httpClient = HttpClients.createDefault()) {
            final HashMap<String, String> argsMap = new HashMap<>();
            for (int i = 0; i < args.length; i++) {
                final String[] split = args[i].split("=");
                if (split.length > 1) {
                    argsMap.put(split[0], split[1]);
                } else {
                    argsMap.put(split[0], "");
                }
            }

            final String url = argsMap.get(ARG_URL);

            final long startTime = System.currentTimeMillis();

            final HttpPost httpPost = new HttpPost(url);
            httpPost.addHeader("Content-Type", "application/audit");

            // Also add all our command options.
            argsMap.forEach(httpPost::addHeader);

            final int bufferSize = argsMap.containsKey(BUFFER_SIZE)
                    ? Integer.parseInt(argsMap.get(BUFFER_SIZE))
                    : 100;
            final int writeSize = argsMap.containsKey(WRITE_SIZE)
                    ? Integer.parseInt(argsMap.get(WRITE_SIZE))
                    : 1000;


            httpPost.setEntity(new EntityTemplate(
                    -1,
                    ContentType.create("application/audit"),
                    null,
                    outputStream -> {
                        // Using Zip Compression we just have 1 file (called 1)
                        if (ZIP.equalsIgnoreCase(argsMap.get(ARG_COMPRESSION))) {
                            System.out.println("Using ZIP");
                            try (final ZipArchiveOutputStream out = ZipUtil.createOutputStream(outputStream)) {
                                out.putArchiveEntry(new ZipArchiveEntry("1"));
                                try {
                                    write(out, bufferSize, writeSize);
                                } finally {
                                    out.closeArchiveEntry();
                                }
                            }

                        } else if (GZIP.equalsIgnoreCase(argsMap.get(ARG_COMPRESSION))) {
                            System.out.println("Using GZIP");
                            try (final GzipCompressorOutputStream out =
                                    new GzipCompressorOutputStream(outputStream)) {
                                write(out, bufferSize, writeSize);
                            }
                        } else {
                            try (final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
                                    outputStream)) {
                                write(bufferedOutputStream, bufferSize, writeSize);
                            }
                        }
                    }));

            httpClient.execute(httpPost, response -> {
                final int code = response.getCode();
                final String msg = response.getReasonPhrase();

                System.out.println(
                        "Client Got Response " + code + " in " + (System.currentTimeMillis() - startTime) + "ms");
                if (msg != null && !msg.isEmpty()) {
                    System.out.println(msg);
                }
                return code;
            });
        }
    }
<p>
Runnable Java Program that can act as a test client to the data feed.
</p>
<p>
<p>
Duplicate class with no reuse to allow copy to be placed in documentation.
</p>
stroom-core/src/main/java/stroom/core/tools/ErrorDataFeedClient.java