pub struct SqlxConfig {Show 24 fields
pub url: String,
pub username: Option<String>,
pub password: Option<String>,
pub table: String,
pub insert_query: Option<String>,
pub select_query: Option<String>,
pub delete_after_read: bool,
pub cursor_column: Option<String>,
pub cursor_id: Option<String>,
pub checkpoint_store: Option<String>,
pub auto_create_table: bool,
pub bulk_copy: bool,
pub polling_interval_ms: Option<u64>,
pub max_polling_interval_ms: Option<u64>,
pub publication: Option<String>,
pub slot_name: Option<String>,
pub create_publication: bool,
pub tls: TlsConfig,
pub max_connections: Option<u32>,
pub min_connections: Option<u32>,
pub acquire_timeout_ms: Option<u64>,
pub idle_timeout_ms: Option<u64>,
pub max_lifetime_ms: Option<u64>,
pub shared: Option<bool>,
}Expand description
General SQLx connection configuration.
Fields§
§url: StringDatabase connection URL. If it contains userinfo, it will be treated as a secret.
username: Option<String>Optional username. Takes precedence over any credentials embedded in the url.
password: Option<String>Optional password. Takes precedence over any credentials embedded in the url.
table: StringThe table to interact with.
insert_query: Option<String>(Publisher only) Optional. A custom SQL INSERT query. Use ? as a placeholder for the payload.
If not provided, a default INSERT INTO {table} (payload) VALUES (?) is used.
For multi-column inserts, embed explicit source tokens directly in the query:
${metadata:<key>} binds message.metadata["<key>"], and ${payload:<field>}
binds the top-level JSON field <field> of the payload (types preserved:
numbers/bools stay numeric/bool). There is no fallback between the two: an
absent metadata key, non-JSON payload, or missing/non-scalar field binds SQL NULL.
Example: INSERT INTO orders (customer_id, sku, qty) VALUES (${metadata:customer_id}, ${payload:sku}, ${payload:qty}).
A query with no ${...} tokens behaves exactly as before (whole payload bound once).
auto_create_table is not supported together with a token-based query.
Tokens bind as text/number/bool; Postgres won’t implicitly cast text into a
numeric/timestamptz column (these arrive as JSON strings from a sql source).
Add an explicit cast next to the token — it is preserved verbatim in the SQL:
VALUES (${payload:amount}::numeric, ${payload:created_at}::timestamptz).
select_query: Option<String>(Consumer only) Optional. A custom SQL SELECT query to fetch messages. This is only supported for PostgreSQL and Microsoft SQL Server.
The query must include a placeholder for the batch size ($1 for PostgreSQL, @p1 for SQL Server).
The bridge will bind the route’s batch_size to this placeholder.
delete_after_read: bool(Consumer only) If true, delete messages after processing.
cursor_column: Option<String>(Consumer only) Read an existing table non-destructively and resumably, paging by this
monotonic column (SELECT * FROM {table} WHERE {cursor_column} > $last ORDER BY {cursor_column} ASC LIMIT n)
and persisting the last read value under cursor_id. Does not delete/lock source rows.
Mutually exclusive with delete_after_read.
cursor_id: Option<String>(Consumer only) Cursor id used to key the persisted resume position. Recommended when
cursor_column is set: without it, progress is not persisted and every restart re-copies
from the beginning.
checkpoint_store: Option<String>(Consumer only) Where to persist the resume cursor in cursor_column mode. A URL selects the
backend; a bare name (or /name) reuses the source datastore with that table name:
- absent → source datastore, table
mqb_cursors_<source_table>(auto-unique) /my_cursors→ source datastore, tablemy_cursorsfile:///var/lib/mqb/cursors.json→ local JSON file (read-only / write-restricted sources)postgres://user@host/db/tableormysql://host/db/table→ external SQL table (table optional)mongodb://host/db/collection→ external MongoDB collection (collection optional)s3://bucket/prefix(alsogs://,az://,abfs://) → cloud object store; creds via env
When no table/collection is named, it defaults to mqb_cursors_<source_table>.
May embed connection credentials, so it is treated as a secret.
auto_create_table: bool(Publisher only) If true, automatically create the table and indexes if they don’t exist. Defaults to false.
bulk_copy: bool(Publisher only) PostgreSQL only. Bulk-load batches via COPY FROM STDIN (much faster than multi-row INSERT). Requires a token-based insert_query; no ON CONFLICT/RETURNING.
polling_interval_ms: Option<u64>(Consumer only) Polling interval in milliseconds. Defaults to 100ms.
max_polling_interval_ms: Option<u64>(Consumer only) If set, the poll interval backs off exponentially from polling_interval_ms
up to this value while drained, resetting on new rows. Unset = constant interval.
publication: Option<String>(Consumer only, PostgreSQL) If set, consume via logical-replication CDC instead of cursor
polling: streams inserts/updates/deletes from this publication. Requires the postgres-cdc
feature and a Postgres URL. For full control use the dedicated postgres_cdc endpoint.
slot_name: Option<String>(Consumer only, CDC) Replication slot name; created if missing. Defaults to mq_bridge_slot.
create_publication: bool(Consumer only, CDC) When publication is set, create it if missing (default false).
Needs table-owner privilege: it is auto-published FOR TABLE {table}.
tls: TlsConfigTLS configuration for the database connection.
max_connections: Option<u32>Maximum number of connections in the pool. Defaults to 10.
min_connections: Option<u32>Minimum number of connections to keep in the pool. Defaults to 0.
acquire_timeout_ms: Option<u64>Timeout for acquiring a connection from the pool in milliseconds. Defaults to 30000ms.
idle_timeout_ms: Option<u64>Maximum idle time for a connection in milliseconds. Defaults to 600000ms (10 minutes).
max_lifetime_ms: Option<u64>Maximum lifetime of a connection in milliseconds. Defaults to 1800000ms (30 minutes).
Share one connection pool per connection (default: true); false forces a dedicated pool.
Trait Implementations§
Source§impl Clone for SqlxConfig
impl Clone for SqlxConfig
Source§fn clone(&self) -> SqlxConfig
fn clone(&self) -> SqlxConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more