F
Flutter Friendly
@flutterfriendly1.0K подп.
825просмотров
80.9%от подписчиков
5 февраля 2026 г.
📷 ФотоScore: 908
🪙Привет, это Катя, Flutter Dev Friflex Сегодня я хочу рассказать вам о библиотеке dart_amqp — полнофункциональном клиенте для работы с протоколом AMQP (Advanced Message Queue Protocol). Эта библиотека позволяет приложениям взаимодействовать с брокерами сообщений, такими как RabbitMQ. Что такое dart_amqp? dart_amqp — это клиентская библиотека для работы с AMQP-серверами, которая предоставляет удобный API для создания распределенных систем обмена сообщениями. Она поддерживает все основные возможности протокола AMQP, включая очереди, обменники, подтверждения сообщений и транзакции. Создание клиента ▪️Настройка подключения Для тонкой настройки подключения используется класс ConnectionSettings, который позволяет переопределить параметры по умолчанию: Client client = Client(   settings: ConnectionSettings(     host: "127.0.0.1",     port: 5672,     virtualHost: "/",     authProvider: PlainAuthenticationProvider("guest", "guest"),     maxConnectionAttempts: 1,     reconnectWaitTime: Duration(milliseconds: 1500),   ), ); ▪️Подключение к серверу Клиент подключается к серверу лениво, но можно установить соединение явно: await client.connect(); Аутентификация Библиотека поставляется с двумя провайдерами аутентификации: ▫️PlainAuthenticationProvider — для простой аутентификации по логину и паролю ▫️AmqPlainAuthenticationProvider — альтернативный вариант Plain-аутентификации ▫️Можно создать собственный провайдер, реализовав интерфейс Authenticator Работа с TLS Для защищенных соединений можно передать SecurityContext: Client client = Client(   settings: ConnectionSettings(     tlsContext: SecurityContext()       ..setTrustedCertificates('path/to/cert.pem'),     onBadCertificate: (certificate) => false,   ), ); Heartbeat Heartbeat позволяет клиенту и серверу отслеживать активность соединения. Если обе стороны указывают ненулевой период (> 1 секунды), механизм активируется автоматически: Client client = Client(   settings: ConnectionSettings(     tuningSettings: TuningSettings(       heartbeatPeriod: const Duration(seconds: 60),     ),   ), ); await client.connect(); print(client.tuningSettings.heartbeatPeriod); Если сервер не отвечает в течение согласованного периода, выбрасывается исключение HeartbeatFailedException. Работа с каналами Каналы (Channels) — это виртуальные соединения внутри одного TCP-подключения: Channel channel = await client.channel(); queue() — объявить именованную очередь exchange() — объявить обменник для маршрутизации сообщений select() — начать транзакцию commit() — зафиксировать транзакцию rollback() — откатить транзакцию Работа с очередями // Создание очереди Queue queue = await channel.queue("my_queue"); // Публикация сообщения queue.publish("Flutter Friendly"); // Потребление сообщений Consumer consumer = await queue.consume(); consumer.listen((AmqpMessage message) {   print("Получено: ${message.payloadAsString}");   message.ack(); // Подтвердить обработку }); Exchanges Обменники позволяют маршрутизировать сообщения к нескольким получателям. Exchange exchange = await channel.exchange(   "my_exchange",   ExchangeType.FANOUT, ); // Публикация через обменник exchange.publish("Broadcast message", "routing_key"); // Привязка потребителя Consumer consumer = await exchange.bindPrivateQueueConsumer(   ["routing_key"], ); consumer.listen((AmqpMessage message) {   print("Сообщение из exchange: ${message.payloadAsString}"); }); ❓Если вам интересна эта тема, то в следующей статье я объясню работу с AmqpMessage, Publisher Confirms, обработку ошибок и реальные примеры работы с несколькими RabbitMQ инстансами одновре
825
просмотров
4000
символов
Нет
эмодзи
Да
медиа

Другие посты @flutterfriendly

Все посты канала →
🪙Привет, это Катя, Flutter Dev Friflex Сегодня я хочу расск — @flutterfriendly | PostSniper