Expand description
OxiGDAL Pub/Sub - Google Cloud Pub/Sub integration for OxiGDAL.
This crate provides comprehensive support for Google Cloud Pub/Sub messaging, including publishing, subscribing, schema validation, and monitoring capabilities.
§Features
- Publisher: Async message publishing with batching and ordering keys
- Subscriber: Pull and push subscriptions with flow control
- Schema Support: Avro and Protobuf schema validation (feature-gated)
- Monitoring: Cloud Monitoring integration for metrics and observability
- Dead Letter Queues: Automatic handling of failed messages
- Flow Control: Intelligent message throttling and backpressure
§Example: Publishing Messages
use oxigdal_pubsub::{Publisher, PublisherConfig, Message};
let config = PublisherConfig::new("my-project", "my-topic")
.with_batching(true)
.with_batch_size(100);
let publisher = Publisher::new(config).await?;
let message = Message::new(b"Hello, Pub/Sub!".to_vec())
.with_attribute("source", "oxigdal")
.with_ordering_key("order-1");
let message_id = publisher.publish(message).await?;
println!("Published message: {}", message_id);§Example: Subscribing to Messages
use oxigdal_pubsub::{Subscriber, SubscriberConfig, HandlerResult};
let config = SubscriberConfig::new("my-project", "my-subscription")
.with_ack_deadline(30);
let subscriber = Subscriber::new(config).await?;
let handle = subscriber.start(|message| {
println!("Received: {:?}", message.data);
HandlerResult::Ack
}).await?;
// Wait for shutdown signal...
subscriber.stop();§Feature Flags
std(default): Enable standard library supportasync(default): Enable async runtime supportpublisher(default): Enable publisher functionalitysubscriber(default): Enable subscriber functionalityschema: Enable schema supportavro: Enable Apache Avro schema supportprotobuf: Enable Protocol Buffers schema supportmonitoring: Enable Cloud Monitoring integrationbatching: Enable message batchingordering: Enable message orderingflow-control: Enable flow controldead-letter: Enable dead letter queue support
§Pure Rust Implementation
This crate uses Pure Rust implementations for all functionality:
google-cloud-pubsubfor Pub/Sub operationsgoogle-cloud-authfor authenticationgoogle-cloud-monitoringfor monitoring (optional)apache-avrofor Avro schema support (optional)prostfor Protocol Buffers support (optional)
§COOLJAPAN Policy Compliance
- ✅ Pure Rust (no C/Fortran dependencies)
- ✅ No
unwrap()usage (proper error handling) - ✅ Files under 2000 lines (modular design)
- ✅ Workspace dependencies
Re-exports§
pub use error::PubSubError;pub use error::Result;pub use publisher::DEFAULT_BATCH_SIZE;pub use publisher::DEFAULT_BATCH_TIMEOUT_MS;pub use publisher::DEFAULT_MAX_OUTSTANDING_PUBLISHES;pub use publisher::MAX_MESSAGE_SIZE;pub use publisher::Message;pub use publisher::Publisher;pub use publisher::PublisherConfig;pub use publisher::PublisherStats;pub use publisher::RetryConfig;pub use subscriber::DEFAULT_ACK_DEADLINE_SECONDS;pub use subscriber::DEFAULT_HANDLER_CONCURRENCY;pub use subscriber::DEFAULT_MAX_OUTSTANDING_BYTES;pub use subscriber::DEFAULT_MAX_OUTSTANDING_MESSAGES;pub use subscriber::DeadLetterConfig;pub use subscriber::FlowControlSettings;pub use subscriber::HandlerResult;pub use subscriber::ReceivedMessage;pub use subscriber::Subscriber;pub use subscriber::SubscriberConfig;pub use subscriber::SubscriberStats;pub use subscriber::SubscriptionType;pub use topic::TopicBuilder;pub use topic::TopicConfig;pub use topic::TopicManager;pub use topic::TopicMetadata;pub use topic::TopicStats;pub use subscription::DeadLetterPolicy;pub use subscription::ExpirationPolicy;pub use subscription::RetryPolicy;pub use subscription::SubscriptionBuilder;pub use subscription::SubscriptionCreateConfig;pub use subscription::SubscriptionManager;pub use subscription::SubscriptionMetadata;pub use subscription::SubscriptionStats;
Modules§
- error
- Error types for OxiGDAL Pub/Sub operations.
- publisher
- Publisher module for Google Cloud Pub/Sub.
- subscriber
- Subscriber module for Google Cloud Pub/Sub.
- subscription
- Subscription management for Google Cloud Pub/Sub.
- topic
- Topic management for Google Cloud Pub/Sub.
Constants§
- CRATE_
NAME - Crate name.
- VERSION
- Crate version.
Functions§
- crate_
name - Gets the crate name.
- version
- Gets the crate version.