/** * Create a LoadSimulationClient with the given JCommander arguments. * * @param arguments * Arguments to configure this from. */ public LoadSimulationClient(final MainArguments arguments) throws Exception { payloadCache = new ConcurrentHashMap<>(); topicsToTradeUnits = new ConcurrentHashMap<>(); clientConf = new ClientConfiguration(); clientConf.setConnectionsPerBroker(4); clientConf.setIoThreads(Runtime.getRuntime().availableProcessors()); // Disable stats on the clients to reduce CPU/memory usage. clientConf.setStatsInterval(0, TimeUnit.SECONDS); producerConf = new ProducerConfiguration(); // Disable timeout. producerConf.setSendTimeout(0, TimeUnit.SECONDS); producerConf.setMessageRoutingMode(ProducerConfiguration.MessageRoutingMode.RoundRobinPartition); // Enable batching. producerConf.setBatchingMaxPublishDelay(1, TimeUnit.MILLISECONDS); producerConf.setBatchingEnabled(true); consumerConf = new ConsumerConfiguration(); consumerConf.setMessageListener(ackListener); admin = new PulsarAdmin(new URL(arguments.serviceURL), clientConf); client = new PulsarClientImpl(arguments.serviceURL, clientConf); port = arguments.port; executor = Executors.newCachedThreadPool(new DefaultThreadFactory("test-client")); }