faucet_sink_sqs/lib.rs
1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3//! # faucet-sink-sqs
4//!
5//! AWS SQS sink connector for
6//! [faucet-stream](https://github.com/faucet-hq/faucet-stream): batched
7//! `SendMessageBatch` writes (≤10 entries / ≤1 MiB per request, 256 KiB where
8//! a queue still enforces the older limit), bounded
9//! concurrent in-flight requests, per-entry partial-failure retry, optional
10//! FIFO `message_group_id` / `message_deduplication_id`, and DLQ-routable
11//! per-record outcomes.
12//!
13//! Delivery is **at-least-once**: an ambiguous whole-request failure that is
14//! retried can double-write messages that actually landed. On a FIFO queue set
15//! `message_deduplication_id_field` (or enable content-based dedup on the
16//! queue) so replays within the 5-minute dedup window converge.
17
18mod config;
19mod sink;
20
21pub use config::{MAX_BATCH_BYTES, MAX_ENTRIES_PER_REQUEST, MAX_MESSAGE_BYTES, SqsSinkConfig};
22pub use sink::SqsSink;
23
24// Shared connection types, re-exported so users need only this crate.
25pub use faucet_common_sqs::{SqsCredentials, build_client};
26
27/// The connector's static descriptor (RFC 0013): its capabilities, answered from config alone.
28pub const DESCRIPTOR: faucet_core::ConnectorDescriptor =
29 faucet_core::ConnectorDescriptor::new("sqs", faucet_core::capabilities::append_only_sink)
30 .with_host_identity(faucet_common_sqs::host_identity);