Ошибка shoryuken в `validate_queues': указанные очереди
Я использую rails "Shoryuken" gem, но я получаю ошибки для проверки очередей в моей среде разработки, когда я запускаю rails server. Ниже приведена ошибка:-
gems / shoryuken-2.0.11 / lib / shoryuken / environment_loader.rb: 172: в `validate_queues': указанные очереди (ий) ["development_worker"] не существуют (ArgumentError)
Я использовал следующие настройки:-
конфиг / shoryuken.yml
aws:
access_key_id: <%= ENV["SQS_IAM"] %>
secret_access_key: <%= ENV["SQS_IAM_SECRET"] %>
region: <%= ENV["SQS_IAM_REGION"] %>
concurrency: 25 # The number of allocated threads to process messages. Default 25
delay: 0 # The delay in seconds to pause a queue when it's empty. Default 0
queues:
- ["<%= Rails.env %>_worker", 1]
Инициализаторы / shoryuken.rb
def parse_config(config_file)
if File.exist?(config_file)
YAML.load(ERB.new(IO.read(config_file)).result)
else
raise ArgumentError, "Config file #{config_file} does not exist"
end
end
config = parse_config([Dir.pwd, 'config/shoryuken.yml'].join('/')).deep_symbolize_keys
Shoryuken::EnvironmentLoader.load(config)
Я хочу, чтобы очередь была привязана к конкретной среде.
1 ответ
Равиндра, глядя на код shoryuken, вы получаете сообщение об ошибке, потому что вы не создали очередь SQS с именем development_worker
Это правда?
Вам нужно будет создать одну очередь для каждого разработчика, потому что shoryuken будет работать на компьютерах каждого разработчика. Если вы этого не сделаете, все процессы shoryuken каждого компьютера будут опрашивать сообщения из одной и той же очереди. Представьте, что есть два процесса шорюкена, sh1
а также sh2
, которые соответствуют машине dev1 и dev2 соответственно. Если dev1 отправляет сообщение SQS dev-queue
, sh2
Процесс может быть в состоянии опросить сообщение, которое отправил dev1.
Если вы хотите избежать создания очередей в AWS, вы можете взглянуть на это.