У меня есть два приложения sap1 и sap2, и я использую RabbitMQ (Bunny Gem) для обмена сообщениями, поэтому, работая с sap1, я создам сообщение и опубликую
sap1 (приложение для издателей).)
Gemfile
ruby 1.9.3
gem 'bunny', '~> 1.7', '>= 1.7.1'
publish.rb
def publish
# Start a communication session with RabbitMQ
connection = Bunny.new(:host => "123123", :vhost => "1231", :user => "123", :password => "Z7tN")
connection.start
# open a channel
channel = connection.create_channel
# declare a queue
queue = channel.queue("order-test", :durable => true)
# publish a message to the default exchange which then gets routed to this queue
values = { mac_id: 14123 }
queue.publish(values.to_json)
connection.close
end
sap2 (приложение для пользователя)
Gemfile
ruby 2
gem 'bunny'
gem 'sneakers'
config / initializers / sneakers.rb
require 'sneakers'
Sneakers.configure :connection => Bunny.new(:host => "123123", :vhost => "1231", :user => "123", :password => "Z7tN"), :timeout_job_after => 360
Rakefile
require 'sneakers/tasks'
app / worker / mac_worker.rb
class MacWorker
include Sneakers::Worker
from_queue "order-test"
def work(params)
# Calling the function
end
end
и в консоли для прослушивания, делая это
bundle exec rake sneakers:run
Здесь это работает, иногда я также получаю проблему с подключением, в потребительском приложении я не хочу использовать gem кроссовок, поэтому вместо этого я хочу прочитатьсообщение из очереди с кроликом и положить его в sidekiq, а также как автоматически слушать в sidekiq?