@Override public void run() { LOG.info("Started writer {}.", idx); while (running) { rateLimiter.getLimiter().acquire(batchSize); String streamName = streamNames.get(random.nextInt(numStreams)); final long requestMillis = System.currentTimeMillis(); final List<ByteBuffer> data = buildBufferList(batchSize, requestMillis, messageSizeBytes); if (null == data) { break; } List<Future<DLSN>> results = dlc.writeBulk(streamName, data); for (Future<DLSN> result : results) { result.addEventListener(new TimedRequestHandler(streamName, requestMillis)); } } dlc.close(); } }