<dependency> <groupId>com.github.phantomthief</groupId> <artifactId>buffer-trigger</artifactId> <version>0.2.21</version> </dependency>
BufferTrigger<String> buffer = BatchConsumeBlockingQueueTrigger.<String> newBuilder() // 队列最大容量 .batchSize(2) // 每隔n秒消费一次 .linger(2, TimeUnit.SECONDS) // 消费逻辑 .setConsumerEx((Collection<String> ids) -> { System.out.println("id:"+ JSON.toJSONString(ids)); }).build(); public static void main(String[] args) throws InterruptedException { int i = 0; while (true){ buffer.enqueue(String.valueOf(i++)); Thread.sleep(100L); } }
注意:setConsumerEx处是单线程处理的。可以配合线程池以提高系统并发。