Skip to content

Latest commit

 

History

History
58 lines (43 loc) · 1.22 KB

README.md

File metadata and controls

58 lines (43 loc) · 1.22 KB

Fleet Cron

Build Status

This library provides a distributed lock based on DynamoDB. It uses conditional writes to check if a lock can be acquired.

Installation

Maven

<dependencies>
    <dependency>
        <groupId>com.foodpanda</groupId>
        <artifactId>fleet-cron</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

Gradle

compile 'com.foodpanda:fleet-cron:1.0.0'

Example

Just the locking mechanism

Locker locker = new DynamoDbLocker(
    dynamoDbClient,
    "dynamoDbTable"
);

try {
    if (locker.tryLock("lockKey", 10)) {
        // do work
    }
} finally {
    locker.unlock("lockKey");
}

Scheduling a cron running on multiple servers

CronJobScheduler scheduler = new CronJobSchedulerFactory(locker).createScheduler("cron job name");

scheduler.scheduleAtFixedRate(
    () -> System.out.println("I did some work"),
    0, // Initial delay
    2, // Every 2 seconds,
    TimeUnit.SECONDS
);