Работа с RabbitMQ в приложениях Ruby on Rails
RabbitMQ - это мощный брокер сообщений, который позволяет эффективно организовывать обмен данными между компонентами приложения.
Установка RabbitMQ
Первым шагом будет установка RabbitMQ. Для упрощения этого процесса вы можете воспользоваться менеджером пакетов. Например, с использованием Homebrew на macOS:
brew install rabbitmq
После установки запустите сервер RabbitMQ:
rabbitmq-server
Добавление библиотеки Bunny
Для взаимодействия с RabbitMQ из приложения Rails, мы будем использовать библиотеку Bunny. Добавьте ее в ваш файл Gemfile:
gem 'bunny'
После этого выполните команду bundle install
для установки библиотеки.
Создание соединения с RabbitMQ
Теперь добавим код для создания соединения с RabbitMQ. Обычно это делается в файле config/initializers/rabbitmq.rb
:
# config/initializers/rabbitmq.rb require 'bunny' RABBITMQ_CONNECTION = Bunny.new RABBITMQ_CONNECTION.start
Отправка сообщений
Для отправки сообщений создайте класс, отвечающий за отправку:
# app/services/message_publisher.rb class MessagePublisher def self.publish(message, queue_name) channel = RABBITMQ_CONNECTION.create_channel queue = channel.queue(queue_name) queue.publish(message, persistent: true) channel.close end end
Вы можете использовать этот класс для отправки сообщений в определенные очереди. Например:
MessagePublisher.publish('Hello, RabbitMQ!', 'my_queue')
Подписка на сообщения
Для обработки сообщений создайте класс, отвечающий за подписку:
# app/services/message_subscriber.rb class MessageSubscriber def self.subscribe(queue_name) channel = RABBITMQ_CONNECTION.create_channel queue = channel.queue(queue_name) queue.subscribe(block: true) do |delivery_info, properties, body| puts "Received message: #{body}" end end end
Используйте этот класс для подписки на определенные очереди:
MessageSubscriber.subscribe('my_queue')