Как ускорить ручное тестирование интеграций с 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 в парике.