{"id":13648701,"url":"https://github.com/amqp-rs/lapin","last_synced_at":"2025-12-12T13:54:33.449Z","repository":{"id":38397196,"uuid":"83697754","full_name":"amqp-rs/lapin","owner":"amqp-rs","description":"AMQP client library in Rust, with a clean, futures based API","archived":false,"fork":false,"pushed_at":"2024-05-01T20:39:00.000Z","size":2203,"stargazers_count":987,"open_issues_count":10,"forks_count":94,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-05-01T23:54:54.235Z","etag":null,"topics":["amqp","amqp-client","amqp0-9-1","async","hacktoberfest","messaging","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amqp-rs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Keruspe"}},"created_at":"2017-03-02T16:10:03.000Z","updated_at":"2024-06-14T21:57:08.632Z","dependencies_parsed_at":"2024-01-14T10:59:39.326Z","dependency_job_id":"7f769e45-1c54-4abb-8f06-cfbd4dd53b3f","html_url":"https://github.com/amqp-rs/lapin","commit_stats":{"total_commits":1680,"total_committers":35,"mean_commits":48.0,"dds":"0.15535714285714286","last_synced_commit":"e52e1dd5922727d8992e2f766144dfd48f00e252"},"previous_names":["sozu-proxy/lapin"],"tags_count":486,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amqp-rs%2Flapin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amqp-rs%2Flapin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amqp-rs%2Flapin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amqp-rs%2Flapin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amqp-rs","download_url":"https://codeload.github.com/amqp-rs/lapin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250232431,"owners_count":21396642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amqp","amqp-client","amqp0-9-1","async","hacktoberfest","messaging","rust"],"created_at":"2024-08-02T01:04:28.022Z","updated_at":"2025-12-12T13:54:33.361Z","avatar_url":"https://github.com/amqp-rs.png","language":"Rust","funding_links":["https://github.com/sponsors/Keruspe"],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"logo.jpg\" width=\"30%\"\u003e\u003c/img\u003e\n\n[![API Docs](https://docs.rs/lapin/badge.svg)](https://docs.rs/lapin)\n[![Build status](https://github.com/amqp-rs/lapin/workflows/Build%20and%20test/badge.svg)](https://github.com/amqp-rs/lapin/actions)\n[![Downloads](https://img.shields.io/crates/d/lapin.svg)](https://crates.io/crates/lapin)\n[![Coverage Status](https://coveralls.io/repos/github/amqp-rs/lapin/badge.svg?branch=main)](https://coveralls.io/github/amqp-rs/lapin?branch=main)\n[![Dependency Status](https://deps.rs/repo/github/amqp-rs/lapin/status.svg)](https://deps.rs/repo/github/amqp-rs/lapin)\n[![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n \u003cstrong\u003e\n   A Rust AMQP client library.\n \u003c/strong\u003e\n\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nThis project follows the [AMQP 0.9.1 specifications](https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf), targeting especially RabbitMQ.\n\n## Features\n\n- unstable: enable access to the experimental reconnection features\n- codegen: force code generation (default to pregenerated sources)\n- vendored-openssl: use a vendored openssl version instead of the system one (when using openssl backend)\n- verbose-errors: enable more verbose errors in the AMQP parser\n\n## TLS backends\n\n- native-tls\n- openssl\n- rustls (default)\n\n## Rustls certificates store\n\n- rustls-native-certs (default)\n- rustls-webpki-roots-certs\n\n## Warning about crypto backends for rustls\n\nA crypto implementation must be enabled in rustls using feature flags.\nWe mimic what rustls does, providing one feature flag per implementation and enabling the same as rustls by default.\nAvailable options are:\n- `rustls--aws_lc_rs` (default)\n- `rustls--ring`\n\n## Integration with third-party runtimes\n\nLapin can use any runtime of your choice by passing it to the `ConnectionProperties`.\n\nYou can configure the executor to use through [executor-trait](https://crates.io/crates/executor-trait).\n\nYou can configure the reactor to use through [reactor-trait](https://crates.io/crates/reactor-trait).\n\nThere are implementations for tokio, async-std and others.\n\n## Example\n\n```rust\nuse futures_lite::stream::StreamExt;\nuse lapin::{\n    options::*, publisher_confirm::Confirmation, types::FieldTable, BasicProperties, Connection,\n    ConnectionProperties, Result,\n};\nuse tracing::info;\n\nfn main() -\u003e Result\u003c()\u003e {\n    if std::env::var(\"RUST_LOG\").is_err() {\n        std::env::set_var(\"RUST_LOG\", \"info\");\n    }\n\n    tracing_subscriber::fmt::init();\n\n    let addr = std::env::var(\"AMQP_ADDR\").unwrap_or_else(|_| \"amqp://127.0.0.1:5672/%2f\".into());\n\n    async_global_executor::block_on(async {\n        let conn = Connection::connect(\n            \u0026addr,\n            ConnectionProperties::default(),\n        )\n        .await?;\n\n        info!(\"CONNECTED\");\n\n        let channel_a = conn.create_channel().await?;\n        let channel_b = conn.create_channel().await?;\n\n        let queue = channel_a\n            .queue_declare(\n                \"hello\",\n                QueueDeclareOptions::default(),\n                FieldTable::default(),\n            )\n            .await?;\n\n        info!(?queue, \"Declared queue\");\n\n        let mut consumer = channel_b\n            .basic_consume(\n                \"hello\",\n                \"my_consumer\",\n                BasicConsumeOptions::default(),\n                FieldTable::default(),\n            )\n            .await?;\n        async_global_executor::spawn(async move {\n            info!(\"will consume\");\n            while let Some(delivery) = consumer.next().await {\n                let delivery = delivery.expect(\"error in consumer\");\n                delivery\n                    .ack(BasicAckOptions::default())\n                    .await\n                    .expect(\"ack\");\n            }\n        }).detach();\n\n        let payload = b\"Hello world!\";\n\n        loop {\n            let confirm = channel_a\n                .basic_publish(\n                    \"\",\n                    \"hello\",\n                    BasicPublishOptions::default(),\n                    payload,\n                    BasicProperties::default(),\n                )\n                .await?\n                .await?;\n            assert_eq!(confirm, Confirmation::NotRequested);\n        }\n    })\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famqp-rs%2Flapin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famqp-rs%2Flapin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famqp-rs%2Flapin/lists"}