Skip to content

feat: add multibrokers support#2867

Draft
Lancetnik wants to merge 2 commits into
mainfrom
feat/526
Draft

feat: add multibrokers support#2867
Lancetnik wants to merge 2 commits into
mainfrom
feat/526

Conversation

@Lancetnik
Copy link
Copy Markdown
Member

@Lancetnik Lancetnik commented May 13, 2026

Adds multibroker support across the application stack (internal application, FastStream app, ASGI integration) and updates related tests.

from faststream import FastStream, Logger
from faststream.nats import NatsBroker
from faststream.rabbit import RabbitBroker, RabbitResponse

rbroker = RabbitBroker()

@rbroker.subscriber("test")
async def handler_rmq(msg: str, logger: Logger) -> None:
    logger.info(msg)

nbroker = NatsBroker()

@nbroker.subscriber("test2")
@rbroker.publisher("test")
async def handler_nats(msg: str, logger: Logger):
    logger.info(msg)
    return RabbitResponse(msg)

app = FastStream(rbroker, nbroker)

@app.after_startup
async def _() -> None:
    await nbroker.publish("Hi!", "test2")


# testing
import pytest

from faststream import TestApp
from faststream.nats import TestNatsBroker
from faststream.rabbit import TestRabbitBroker

@pytest.mark.asyncio()
async def test_smoke():
    async with TestApp(app), TestNatsBroker(nbroker) as nbr, TestRabbitBroker(rbroker):
        await nbr.publish("Hi!", "test2")
        await handler_rmq.wait_call(3)
        handler_rmq.mock.assert_called_once_with("Hi!")

Changed files: faststream/_internal/application.py, faststream/app.py, faststream/asgi/app.py, plus tests in tests/application/test_delayed_broker.py, tests/asgi/testcase.py, and tests/cli/require_broker/test_app.py.

Closes #526

@Lancetnik Lancetnik requested a review from Sehat1137 as a code owner May 13, 2026 17:56
@Lancetnik Lancetnik marked this pull request as draft May 13, 2026 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Using multiple brokers

1 participant