Ben heroku mesaj kuyrukları çalıştırmaya çalışıyorum. Bunun için RabbitMQ Bigwig eklentisini kullanıyorum.sneaker, heroku - almayan mesajlar almıyor RabbitMQ Bigwig
Bunny gem'i kullanarak ve sneakers gem ile mesaj almaya çalışırken iletileri yayınlıyorum. Bu kurulum yerel makinede sorunsuz bir şekilde çalışır. Bahsettiğim bağlama ile RabbitMQ yönetim eklenti bu kuyruk görmek mümkün duyuyorum
namespace :rabbitmq do
desc 'Setup routing'
task :setup_test_commands_queue do
require 'bunny'
conn = Bunny.new(ENV['SYNC_AMQP'], read_timeout: 10, heartbeat: 10)
conn.start
ch = conn.create_channel
# get or create exchange
x = ch.direct('testsync.pcc', :durable => true)
# get or create queue (note the durable setting)
queue = ch.queue('test.commands', :durable => true, :ack => true, :routing_key => 'test_cmd')
# bind queue to exchange
queue.bind(x, :routing_key => 'test_cmd')
conn.close
end
end
:
Ben kurulum kuyruğunda ben kurulum sırasına sunucuda bu tırmık çalıştırmak
için aşağıdaki adımları uygulayın.
class TestPublisher
def self.publish(test)
x = channel.direct("testsync.pcc", :durable => true)
puts "publishing this = #{Test}"
x.publish(Test, :persistent => true, :routing_key => 'pcc_cmd')
end
def self.channel
@channel ||= connection.create_channel
end
def self.connection
@conn = Bunny.new(ENV['RABBITMQ_BIGWIG_TX_URL'], read_timeout: 10, heartbeat: 10) # getting configuration from rabbitmq.yml
@conn.start
end
end
İleti yayınlamak için TestPublisher.publish() yöntemini arıyorum.
require 'test_sync'
class TestsWorker
include Sneakers::Worker
from_queue "test.commands", env: nil
def work(raw_event)
puts "^"*100
puts raw_event
# o = CaseNote.create!(content: raw_event, creator_id: 1)
# puts "#########{o}"
test = Oj.load raw_event
test.execute
# event_params = JSON.parse(raw_event)
# SomeWiseService.build.call(event_params)
ack!
end
end
Benim Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
sneaker: WORKERS=TestsWorker bundle exec rake sneakers:run
Benim Rakefile
require File.expand_path('../config/application', __FILE__)
require 'rake/dsl_definition'
require 'rake'
require 'sneakers/tasks'
Test::Application.load_tasks
Benim sneaker yapılandırma
require 'sneakers'
Sneakers.configure amqp: ENV['RABBITMQ_BIGWIG_RX_URL'],
log: "log/sneakers.log",
threads: 1,
workers: 1
puts "configuring sneaker"
:
böyle sneaker işçisi var 10
Bu iletinin yayınlandığından eminim. Rabbitmq yönetim eklentisi üzerine mesaj alabiliyorum. Ama spor ayakkabı çalışmıyor. Sneakers.log'da yardımcı olabilecek hiçbir şey yok. Heroku üzerinde
sneakers.log:
bu geç cevap için# Logfile created on 2016-04-05 14:40:59 +0530 by logger.rb/41212
Bunu çözebildiniz mi? Aptalca bir şey: spor ayakkabı sürecine bir dyno atadın mı? Bunun dışında, gerçek konfigürasyon satırından önce "sneaker'u konfigüre etmek" koyar ve günlüklerde gösterilip gösterilmeyeceğini belirleyebilir misiniz? Ayrıca, heroku'ndaki girişiniz hangi dyno'dan geldiği hakkında bilgi içermemelidir? – draganstankovic
Bu, gelecekte bazı kötü ruhlara yardımcı olabilir. Ben benzer bir şey yapıyordum ama 'cloud66', procfile değiştirmem gerekiyordu: sneaker: WORKERS = TestsWorker bundle exec rake sneakers: run 'to: sneaker: exec rune sneakers: WORKERS çalıştırmak = TestsWorker 'NOT - WORKERS env sonunda gelmeli – house9