Expand description
Custom protocol extensions API
This module provides a flexible extension system for adding custom fields and behaviors to Celery protocol messages without breaking compatibility.
§Examples
use celers_protocol::extension_api::{Extension, ExtensionRegistry, ExtensionValue};
use serde_json::json;
// Define a custom extension
struct TelemetryExtension;
impl Extension for TelemetryExtension {
fn name(&self) -> &str {
"telemetry"
}
fn validate(&self, value: &ExtensionValue) -> Result<(), String> {
// Custom validation logic
if let ExtensionValue::Object(map) = value {
if !map.contains_key("trace_id") {
return Err("Missing trace_id".to_string());
}
}
Ok(())
}
}
// Register extension
let mut registry = ExtensionRegistry::new();
registry.register(Box::new(TelemetryExtension));
// Use extension
let value = ExtensionValue::Object(
vec![("trace_id".to_string(), json!("abc123"))]
.into_iter()
.collect()
);
registry.validate("telemetry", &value).unwrap();Structs§
- Extended
Message - Message with custom extensions
- Extension
Registry - Registry for managing custom extensions
- Metrics
Extension - Metrics collection extension
- Routing
Extension - Custom routing extension
- Telemetry
Extension - Telemetry/tracing extension
Enums§
- Extension
Value - Extension value types
Traits§
- Extension
- Extension trait for custom protocol extensions
Functions§
- create_
default_ registry - Create a registry with built-in extensions