Skip to content

peiqiang/buffer-trigger

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

buffer-trigger Build Status Coverage Status

A local data buffer with customizable data trigger

  • customize trigger strategy
  • buffer container can be customized
  • jdk1.8 only

Get Started

<dependency>
    <groupId>com.github.phantomthief</groupId>
    <artifactId>buffer-trigger</artifactId>
    <version>0.2.9</version>
</dependency>

Usage

// declare
BufferTrigger<String> buffer = SimpleBufferTrigger.<String, Set<String>> newBuilder() //
        .triggerStrategy(new MultiIntervalTriggerStrategy() //
            .on(10, SECONDS, 1) //
            .on(5, SECONDS, 10) //
            .on(1, SECONDS, 100) //
        ) //
        .consumer(this::out) //
        .setContainer(ConcurrentSkipListSet::new, Set::add) // default is Collections.newSetFromMap(new ConcurrentHashMap<>())
        .build();
        
// enqueue
buffer.enqueue("i'm ok");

// consumer declare
private void out(Collection<String> set) {
	set.forEach(System.out::println);
}

// batch consumer blocking queue
BufferTrigger<String> buffer = BatchConsumeBlockingQueueTrigger.<String> newBuilder() //
                .batchSize(3) //
                .setConsumerEx(this::out) //
                .bufferSize(5) //
                .linger(ofSeconds(2)) //
                .build();
    

Special Thanks

perlmonk with his great team gives me a huge help. (https://github.com/aloha-app)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%