Skip to content

get_broker_channels

faststream.specification.asyncapi.v2_6_0.generate.get_broker_channels #

get_broker_channels(
    broker: BrokerUsecase[MsgType, ConnectionType, Any],
    servers: list[str] | None = None,
) -> dict[str, Channel]

Get the broker channels for an application.

Source code in faststream/specification/asyncapi/v2_6_0/generate.py
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
def get_broker_channels(
    broker: "BrokerUsecase[MsgType, ConnectionType, Any]",
    servers: list[str] | None = None,
) -> dict[str, Channel]:
    """Get the broker channels for an application."""
    channels = {}

    for s in filter(lambda s: s.specification.include_in_schema, broker.subscribers):
        for key, sub in s.schema().items():
            if key in channels:
                warnings.warn(
                    f"Overwrite channel handler, channels have the same names: `{key}`",
                    RuntimeWarning,
                    stacklevel=1,
                )

            channels[key] = Channel.from_sub(sub, servers=servers)

    for p in filter(lambda p: p.specification.include_in_schema, broker.publishers):
        for key, pub in p.schema().items():
            if key in channels:
                warnings.warn(
                    f"Overwrite channel handler, channels have the same names: `{key}`",
                    RuntimeWarning,
                    stacklevel=1,
                )

            channels[key] = Channel.from_pub(pub, servers=servers)

    return channels