mongo-lock

Crates.iomongo-lock
lib.rsmongo-lock
version0.3.0
sourcesrc
created_at2023-01-09 05:58:56.046509
updated_at2023-06-22 15:37:08.660163
descriptionDistributed mutex locks with MongoDB
homepage
repositoryhttps://github.com/lazureykis/mongo-lock
max_upload_size
id754138
size12,066
Pavel Lazureykis (lazureykis)

documentation

https://docs.rs/mongo-lock

README

Distributed mutually exclusive locks in MongoDB.

Crates.io docs.rs

This crate contains only sync implementation. If you need a async version, use mongo-lock-async crate.

This implementation relies on system time. Ensure that NTP clients on your servers are configured properly.

Installation

Add this crate to Cargo.toml

[dependencies]
mongo_lock = "0"

Usage

fn main() {
    let mongo = mongodb::sync::Client::with_uri_str("mongodb://localhost").unwrap();

    // We need to ensure that mongodb collection has a proper index.
    mongo_lock::prepare_database(&mongo).unwrap();

    if let Ok(Some(lock)) =
        mongo_lock::Lock::try_acquire(
            &mongo,
            "my-key",
            std::time::Duration::from_secs(30)
        )
    {
        println!("Lock acquired.");

        // The lock will be released automatically after leaving the scope.
    }
}
Commit count: 14

cargo fmt