Bunny — это клиент RabbitMQ, ориентированный на простоту использования. Он является полнофункциональным, поддерживает все последние функции RabbitMQ и не имеет каких-либо серьезных зависимостей.
Прямо здесь!
Bunny можно использовать для взаимодействия приложений Ruby с другими приложениями (как встроенными в Ruby, так и нет). Сложность и размер могут варьироваться от простых рабочих очередей до сложных многоэтапных рабочих процессов обработки данных, в которых задействовано множество приложений, созданных с использованием самых разных технологий.
Конкретные примеры:
Сборщики событий, приложения метрик и аналитики могут агрегировать события, создаваемые различными приложениями (веб- и другими) в сети компании.
Веб-приложение может направлять сообщения в приложение Java, которое работает со шлюзами доставки SMS.
MMO-игры могут использовать гибкую маршрутизацию, предоставляемую RabbitMQ, для распространения уведомлений о событиях среди игроков и локаций.
Обновления цен с публичных рынков или из других источников могут распространяться между заинтересованными сторонами, от торговых систем до точек продаж в определенном географическом регионе.
Агрегаторы контента могут обновлять индексы полнотекстового поиска и геопространственного поиска, делегируя фактическую работу по индексированию другим приложениям через RabbitMQ.
Компании могут предоставлять API-интерфейсы потоковой передачи/push своим клиентам, партнерам или просто широкой публике.
Системы непрерывной интеграции могут распределять сборки между несколькими компьютерами с различными конфигурациями оборудования и программного обеспечения, используя расширенные функции маршрутизации RabbitMQ.
Приложение, которое отслеживает обновления из потока в реальном времени (будь то рыночные данные или поток Twitter), может распространять обновления заинтересованным сторонам, включая веб-приложения, которые отображают эту информацию в режиме реального времени.
Поддержка современных версий Bunny
Банни ожидает, что в средах, использующих TLS, при установке Ruby будет использоваться достаточно последняя версия OpenSSL, включающая поддержку TLS 1.3 .
Bunny достаточно хорошо работает на JRuby, но в версиях до JRuby 9000 имеются известные ошибки JRuby, вызывающие повышенную нагрузку на процессор. Пользователям JRuby следует использовать March Hare.
Bunny 1.7.x
была последней версией, поддерживавшей CRuby 1.9.3 и 1.8.7.
Выпуски Modern Bunny ориентированы на поддерживаемую в настоящее время серию выпусков RabbitMQ.
Журнал изменений.
Чтобы использовать Bunny в проекте, управляемом с помощью Bundler:
gem "bunny" , ">= 2.23.0"
Чтобы установить Bunny с RubyGems:
gem install bunny
Ниже приведен небольшой фрагмент, демонстрирующий, как публиковать и синхронно использовать («извлекать API») сообщения с помощью Bunny.
15-минутное руководство с более практическими примерами см. в разделе «Начало работы с RabbitMQ и Ruby с использованием Bunny».
require "bunny"
# Start a communication session with RabbitMQ
conn = Bunny . new
conn . start
# open a channel
ch = conn . create_channel
ch . confirm_select
# declare a queue
q = ch . queue ( "test1" )
q . subscribe ( manual_ack : true ) do | delivery_info , metadata , payload |
puts "This is the message: #{ payload } "
# acknowledge the delivery so that RabbitMQ can mark it for deletion
ch . ack ( delivery_info . delivery_tag )
end
# publish a message to the default exchange which then gets routed to this queue
q . publish ( "Hello, everybody!" )
# await confirmations from RabbitMQ, see
# https://www.rabbitmq.com/publishers.html#data-safety for details
ch . wait_for_confirms
# give the above consumer some time consume the delivery and print out the message
sleep 1
puts "Done"
ch . close
# close the connection
conn . close
15-минутное руководство с более практическими примерами см. в разделе «Начало работы с RabbitMQ и Ruby с использованием Bunny».
Руководства по документации Bunny находятся в разделе docs/guides
в этом репозитории:
Некоторые очень важные руководства по документации RabbitMQ:
Справочник по API Bunny.
У Банни есть список рассылки. Пожалуйста, используйте его для всех вопросов, исследований и обсуждений. Проблемы GitHub следует использовать для конкретных, хорошо понятных и действенных разработчиков и участников, над которыми могут работать.
Мы рекомендуем вам также присоединиться к списку рассылки RabbitMQ. Не стесняйтесь задавать любые вопросы, которые могут у вас возникнуть.
Если вы обнаружили ошибку, которую вы хорошо понимаете, неправильные настройки по умолчанию, неправильную или неясную часть документации или отсутствующую функцию, сообщите о проблеме на GitHub.
Пожалуйста, используйте список рассылки Bunny для вопросов, исследований и обсуждений. Проблемы GitHub следует использовать для конкретных, хорошо понятных и действенных разработчиков и участников, над которыми могут работать.
При регистрации проблемы укажите, какие версии Bunny и RabbitMQ вы используете, предоставьте недавнее содержимое файла журнала RabbitMQ, полные трассировки стека исключений и шаги для воспроизведения (или неудачных тестовых случаев).
Другой широко используемый клиент Ruby RabbitMQ — March Hare (только для JRuby). Это зрелая библиотека, для которой требуется RabbitMQ 3.3.x или новее.
См. CONTRIBUTING.md для получения дополнительной информации о запуске различных наборов тестов.
Выпущено по лицензии MIT.