Skip to content


FastStream NatsBroker supports all regular publishing use cases. You can use them without any changes.

However, if you wish to further customize the publishing logic, you should take a deeper look at specific NatsBroker parameters.

NATS Publishing#

NatsBroker also uses the unified publish method (from a publisher object) to send messages.

import asyncio
from faststream.nats import NatsBroker

async def pub():
    async with NatsBroker() as broker:
        await broker.publish(

Basic Arguments#

The publish method accepts the following arguments:

  • message = "" - message to send.
  • subject: str - subject where the message will be sent.

Message Parameters#

  • headers: dict[str, str] | None = None - headers of the message being sent (used by consumers).
  • correlation_id: str | None = None - message id, which helps to match the original message with the reply to it (generated automatically).

NatsJS Parameters#

  • stream: str | None = None - validate that the subject is in the stream.
  • timeout: float | None = None - wait for the NATS server response.