Как ускорить ручное тестирование интеграций с RabbitMQ с помощью библиотеки pika
Чаще всего для ручного тестирования интеграций с RabbitMQ используют UI‑клиент. Но не всегда это удобно и позволяет тестировать быстро, особенно когда к функционалу привязано несколько очередей и в каждой нужно отдельно просматривать данные об отправленных сообщениях.
В этой статье показано, как с помощью Python‑скрипта можно получать все нужные сообщения из одного или нескольких exchange в отдельную тестовую очередь и просматривать данные из неё в удобном формате в консоли выполнения (run‑консоли).
Подход к получению сообщений выбран как «подписка‑шпион», при котором сообщения дублируются в отдельную тестовую очередь (Queue 2).
Плюсы использования такого скрипта во время тестов:
- нет вмешательства в основную цепочку интеграции с RabbitMQ и не нужно отключать на время тестов потребители;
- можно тестировать без UI‑клиента RabbitMQ;
- есть возможность работать сразу с несколькими обменниками/очередями;
- есть возможность выводить данные сообщений в любом формате;
- есть возможность расширять скрипт или сохранять для каждой фичи свой код скрипта с набором нужных параметров.
Для скрипта использована библиотека pika — популярная Python‑библиотека для взаимодействия с брокерами сообщений по протоколу AMQP 0‑9‑1 (в первую очередь с RabbitMQ).
Один exchange и одна очередь в интеграции
Если для тестируемой фичи сообщения отправляются в один exchange и одну очередь, можно использовать простой скрипт, который:
- подключается к RabbitMQ;
- объявляет/подключает тестовую очередь;
- связывает тестовую очередь с нужным exchange по указанным ключам маршрутизации;
- потребляет сообщения из тестовой очереди и выводит данные сообщений в удобочитаемом виде в консоль.
Запущенный скрипт будет дублировать сообщения в тестовую очередь по указанным ключам маршрутизации и затем выводить данные этих сообщений в run‑консоли.
Несколько exchange и несколько очередей в интеграции
Если для тестируемой фичи сообщения отправляются в несколько exchange и в разные очереди по разным ключам маршрутизации, скрипт можно расширить. В параметрах указываются данные этих exchange и ключей маршрутизации. В функции main добавляется или изменяется код так, чтобы динамически привязывать тестовую очередь/очереди к нужным exchange и ключам маршрутизации.
Тогда во время работы скрипта в консоли будут выводиться данные сообщений из нескольких exchange по указанным ключам маршрутизации.
Также скрипт можно расширить так, чтобы дублировать отдельные сообщения в разные тестовые очереди, но выводить данные сообщений в одно окно консоли. На практике такая возможность встречается редко, но её можно реализовать при необходимости.
Проверка скрипта на локально запущенном контейнере с RabbitMQ
В примерах строки создания и удаления тестового exchange закомментированы, потому что при тестировании реальной фичи exchange уже будет создан, и его имя должно быть указано в параметрах в начале скрипта. Если на реальном проекте пока нет такой интеграции с RabbitMQ, а в учебных целях хочется увидеть работу скрипта, можно поднять контейнер с RabbitMQ в Docker локально, раскомментировать в скрипте строки создания/удаления exchange, запустить основной скрипт и с помощью дополнительного скрипта отправлять тестовые сообщения в RabbitMQ.
Команда для поднятия контейнера с RabbitMQ в Docker обычно выглядит привычно для Docker — при этом важно указать порты и, при необходимости, учётные данные для доступа.
Пример скрипта для отправки тестового сообщения в RabbitMQ (для случая одного exchange и одного ключа маршрутизации; под несколько ключей код можно расширить самостоятельно) позволяет отправить тестовые сообщения, которые затем будут перехватываться тестовой очередью и выводиться в консоль основного скрипта.
Таким образом можно ускорить ручные проверки интеграций с RabbitMQ. Скрипт легко расширять: например, в функции callback можно добавлять проверки данных в определённых полях тела сообщения или выводить в терминал только содержимое отдельного поля тела сообщения, чтобы не просматривать целиком всё сообщение.
Claude за полчаса разгадал загадку АНБ, которой больше 25 лет. Ответ был у криптографов под носом
Четверть века вокруг одного из главных стандартов современной криптографии держалась почти детективная интрига. В 2000 году Американский национальный институт стандартов NIST утвердил набор эллиптических кривых от P‑192 до P‑521 — сегодня на P‑256 держатся подписи сертификатов сайтов, токены входа и защищённые чипы телефонов. Параметры этих кривых выведены из начальных значений (seed), которые Агентство национальной безопасности США передало в стандарт без объяснений. 16 октября 2026 года команда Anthropic сообщила, что её внутренняя исследовательская модель Claude менее чем за полчаса нашла происхождение этих чисел, а криптограф Филиппо Вальсорда, объявивший награду за разгадку, подтвердил правильность решения.
Как я выгружал 1,8 TB с Яндекс Диска после аварии в дата‑центрах
Anthropic забанила мой Claude и отдала в экспорте только телефон. Теперь мне отвечает Grok в парике.





