Skip to content

create_subscriber

faststream.rabbit.subscriber.factory.create_subscriber #

create_subscriber(
    *,
    queue,
    exchange,
    consume_args,
    channel,
    no_reply,
    ack_policy,
    no_ack,
    config,
    title_,
    description_,
    include_in_schema,
)
Source code in faststream/rabbit/subscriber/factory.py
def create_subscriber(
    *,
    queue: "RabbitQueue",
    exchange: "RabbitExchange",
    consume_args: dict[str, Any] | None,
    channel: Optional["Channel"],
    # Subscriber args
    no_reply: bool,
    ack_policy: "AckPolicy",
    no_ack: bool,
    # Broker args
    config: "RabbitBrokerConfig",
    # Specification args
    title_: str | None,
    description_: str | None,
    include_in_schema: bool,
) -> RabbitSubscriber:
    _validate_input_for_misconfigure(ack_policy=ack_policy, no_ack=no_ack)

    subscriber_config = RabbitSubscriberConfig(
        no_reply=no_reply,
        consume_args=consume_args,
        channel=channel,
        queue=queue,
        exchange=exchange,
        _ack_policy=ack_policy,
        _no_ack=no_ack,
        # broker
        _outer_config=config,
    )

    calls = CallsCollection[Any]()

    specification = RabbitSubscriberSpecification(
        _outer_config=config,
        specification_config=RabbitSubscriberSpecificationConfig(
            title_=title_,
            description_=description_,
            include_in_schema=include_in_schema,
            queue=queue,
            exchange=exchange,
        ),
        calls=calls,
    )

    return RabbitSubscriber(
        config=subscriber_config,
        specification=specification,
        calls=calls,
    )