pub struct PostgresReplicationSource { /* private fields */ }Expand description
PostgreSQL replication source that captures changes via logical replication.
This source connects to PostgreSQL using the replication protocol and decodes WAL messages in real-time, converting them to Drasi source change events.
§Fields
base: Common source functionality (dispatchers, status, lifecycle)config: PostgreSQL connection and replication configuration
Implementations§
Source§impl PostgresReplicationSource
impl PostgresReplicationSource
Sourcepub fn builder(id: impl Into<String>) -> PostgresSourceBuilder
pub fn builder(id: impl Into<String>) -> PostgresSourceBuilder
Create a builder for PostgresReplicationSource
§Example
ⓘ
use drasi_source_postgres::PostgresReplicationSource;
let source = PostgresReplicationSource::builder("pg-source")
.with_host("db.example.com")
.with_database("production")
.with_user("replication_user")
.with_password("secret")
.with_tables(vec!["users".to_string(), "orders".to_string()])
.with_bootstrap_provider(my_provider)
.build()?;Sourcepub fn new(id: impl Into<String>, config: PostgresSourceConfig) -> Result<Self>
pub fn new(id: impl Into<String>, config: PostgresSourceConfig) -> Result<Self>
Create a new PostgreSQL replication source.
The event channel is automatically injected when the source is added
to DrasiLib via add_source().
§Arguments
id- Unique identifier for this source instanceconfig- PostgreSQL source configuration
§Returns
A new PostgresReplicationSource instance, or an error if construction fails.
§Errors
Returns an error if the base source cannot be initialized.
§Example
ⓘ
use drasi_source_postgres::{PostgresReplicationSource, PostgresSourceBuilder};
let config = PostgresSourceBuilder::new()
.with_host("db.example.com")
.with_database("mydb")
.with_user("replication_user")
.build();
let source = PostgresReplicationSource::new("my-pg-source", config)?;Sourcepub fn with_dispatch(
id: impl Into<String>,
config: PostgresSourceConfig,
dispatch_mode: Option<DispatchMode>,
dispatch_buffer_capacity: Option<usize>,
) -> Result<Self>
pub fn with_dispatch( id: impl Into<String>, config: PostgresSourceConfig, dispatch_mode: Option<DispatchMode>, dispatch_buffer_capacity: Option<usize>, ) -> Result<Self>
Create a new PostgreSQL replication source with custom dispatch settings
The event channel is automatically injected when the source is added
to DrasiLib via add_source().
Trait Implementations§
Source§impl Source for PostgresReplicationSource
impl Source for PostgresReplicationSource
Source§fn properties(&self) -> HashMap<String, Value>
fn properties(&self) -> HashMap<String, Value>
Get the source’s configuration properties for inspection Read more
Source§fn auto_start(&self) -> bool
fn auto_start(&self) -> bool
Whether this source should auto-start when DrasiLib starts Read more
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Start the source Read more
Source§fn stop<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stop<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Stop the source Read more
Source§fn status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ComponentStatus> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ComponentStatus> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the current status of the source
Source§fn subscribe<'life0, 'async_trait>(
&'life0 self,
settings: SourceSubscriptionSettings,
) -> Pin<Box<dyn Future<Output = Result<SubscriptionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn subscribe<'life0, 'async_trait>(
&'life0 self,
settings: SourceSubscriptionSettings,
) -> Pin<Box<dyn Future<Output = Result<SubscriptionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Subscribe to this source for change events Read more
Source§fn initialize<'life0, 'async_trait>(
&'life0 self,
context: SourceRuntimeContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn initialize<'life0, 'async_trait>(
&'life0 self,
context: SourceRuntimeContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Initialize the source with runtime context. Read more
Source§fn set_bootstrap_provider<'life0, 'async_trait>(
&'life0 self,
provider: Box<dyn BootstrapProvider + 'static>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn set_bootstrap_provider<'life0, 'async_trait>(
&'life0 self,
provider: Box<dyn BootstrapProvider + 'static>,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Set the bootstrap provider for this source Read more
Source§fn dispatch_mode(&self) -> DispatchMode
fn dispatch_mode(&self) -> DispatchMode
Get the dispatch mode for this source (Channel or Broadcast) Read more
Auto Trait Implementations§
impl Freeze for PostgresReplicationSource
impl !RefUnwindSafe for PostgresReplicationSource
impl Send for PostgresReplicationSource
impl Sync for PostgresReplicationSource
impl Unpin for PostgresReplicationSource
impl !UnwindSafe for PostgresReplicationSource
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more