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,
)