To answer my own question, batching can be controlled with. ProducerConfiguration producerConf = new ProducerConfiguration(); producerConf.setMaxPendingMessages(10); producerConf.setBatchingEnabled(true); producerConf.setBatchingMaxMessages(10); producerConf.setBatchingMaxPublishDelay(1, TimeUnit.HOURS);
This will produce in batches of 10. The non-determinism I saw was due to a bug in HashedWheelTimer. I set the delay to Long.MAX_VALUE, which caused the batching trigger to run in a tight loop (https://github.com/netty/netty/issues/7760). -Ivan On Mon, Feb 26, 2018 at 9:53 PM, Ivan Kelly <iv...@apache.org> wrote: > Hi folks, > > I'd like to do some tests with batching and compaction. So far the > only way I've found to control batching is by setting > BatchingMaxMessages and MaxPublishingDelay, but this doesn't seem 100% > deterministic to me. > > Does anyone have a better way to control this, or would it make more > sense to expose ProducerImpl#batchMessageAndSend() just for tests? > > Regards, > Ivan