Skip to main content

Crate oxigdal_pubsub

Crate oxigdal_pubsub 

Source
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 support
  • async (default): Enable async runtime support
  • publisher (default): Enable publisher functionality
  • subscriber (default): Enable subscriber functionality
  • schema: Enable schema support
  • avro: Enable Apache Avro schema support
  • protobuf: Enable Protocol Buffers schema support
  • monitoring: Enable Cloud Monitoring integration
  • batching: Enable message batching
  • ordering: Enable message ordering
  • flow-control: Enable flow control
  • dead-letter: Enable dead letter queue support

§Pure Rust Implementation

This crate uses Pure Rust implementations for all functionality:

  • google-cloud-pubsub for Pub/Sub operations
  • google-cloud-auth for authentication
  • google-cloud-monitoring for monitoring (optional)
  • apache-avro for Avro schema support (optional)
  • prost for 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.