Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Downloads Package version Documentation

faststream-sqlbroker

A SQL-backed broker for FastStream. Documentation.

Transactional outbox

Implementing the transactional outbox pattern becomes as simple as the following.

Publish messages transactionally with your other database operations.

from sqlalchemy.ext.asyncio import create_async_engine

from faststream import FastStream
from faststream.kafka import KafkaBroker, KafkaPublishMessage

from faststream_sqlbroker import SqlBroker, SqlBrokerMessage

engine = create_async_engine("postgresql+asyncpg://user:pass@localhost/mydb")
broker_sqlbroker = SqlBroker(engine=engine)
broker_kafka = KafkaBroker("127.0.0.1:9092")
app = FastStream(broker_sqlbroker, on_startup=[broker_kafka.connect])
publisher_sqlbroker = broker_sqlbroker.publisher()


@app.after_startup # just an example
async def publish_examples():
    async with engine.begin() as connection:
        # ... your other database operations using `connection` ...
        await publisher_sqlbroker.publish(
            {"message": "Hello, SqlBroker!"},
            queue="sqlbroker_queue",
            headers={
                "x-test-header": "outbox",
                "x-kafka-key-source": "outbox-key",
            },
            connection=connection,
        )

And relay the messages from the database to another broker.

publisher_kafka = broker_kafka.publisher("kafka_topic")


@publisher_kafka
@broker_sqlbroker.subscriber(
    queues=["sqlbroker_queue"],
    max_fetch_interval=1,
    fetch_batch_size=10,
    flush_interval=3,
)
async def handle_msg(
    msg_body: dict,
    msg: SqlBrokerMessage,
) -> KafkaPublishMessage:
    return KafkaPublishMessage(
        msg_body,
        headers={
            "x-test-header": msg.headers["x-test-header"],
        },
        key=msg.headers["x-kafka-key-source"].encode(),
    )

Origins

Originated as a PR to FastStream.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

faststream_sqlbroker-0.1.0a11.tar.gz (27.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

faststream_sqlbroker-0.1.0a11-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

File details

Details for the file faststream_sqlbroker-0.1.0a11.tar.gz.

File metadata

  • Download URL: faststream_sqlbroker-0.1.0a11.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for faststream_sqlbroker-0.1.0a11.tar.gz
Algorithm Hash digest
SHA256 8e8038268b44d547cc7070ceded4f3f119986450b7391c244068971350920e27
MD5 1fa0313f898416c7290482bc2cb4c668
BLAKE2b-256 ee241ddb1cb3a2043f670443f9ae938d1da09494ca65b36b3f6e59a1b34f2616

See more details on using hashes here.

Provenance

The following attestation bundles were made for faststream_sqlbroker-0.1.0a11.tar.gz:

Publisher: release_pypi.yaml on faststream-community/faststream-sqlbroker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file faststream_sqlbroker-0.1.0a11-py3-none-any.whl.

File metadata

File hashes

Hashes for faststream_sqlbroker-0.1.0a11-py3-none-any.whl
Algorithm Hash digest
SHA256 3038fe07c3f8adc64cf44cd99d6797fbeaa9561fa44a8fa8303864e6429e8d80
MD5 0013b1c0b476f68d20ec0108b8464fce
BLAKE2b-256 a2edffbb4754953a78379aa16d19a42022d0ce9237b5315fbb18e5808278d86f

See more details on using hashes here.

Provenance

The following attestation bundles were made for faststream_sqlbroker-0.1.0a11-py3-none-any.whl:

Publisher: release_pypi.yaml on faststream-community/faststream-sqlbroker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page