Настройка Shoryuken, Active Job и Amazon SQS в проекте Rails

Как относительный новичок в AWS, было немного сложно заставить работать камень Shoryuken (с Active Job и Active Record) на основе документации по настройке.

  1. Промежуточное программное обеспечение: я не был уверен, является ли промежуточное программное обеспечение необходимой частью настройки, поскольку оно дает только базовый пример. Правильно ли я понимаю, что это полезно, если вам нужно выполнить операции до или после извлечения сообщений из очереди.

  2. Shoryuken вставляет, но не извлекает сообщения из SQS: На этом этапе Shoryuken доставляет сообщения в очередь SQS, я вижу сообщения (в сообщениях, видимых) в консоли AWS, но Shoryuken не извлекает их для выполнения, хотя в них ничего нет очередь.

Приставка

irb(main):003:0> InvitationMailer.send_invite(ii).deliver_later
    Enqueued ActionMailer::DeliveryJob (Job ID: 5c65184c-8656-42bd-95ce-e0ded78a9a44) to Shoryuken(development_mailers) with arguments: "InvitationMailer", "send_invite", "deliver_now", gid://projectname/Invitation/25
    => #<ActionMailer::DeliveryJob:0x007f7fad761a40 @arguments=["InvitationMailer", "send_invite", "deliver_now", #<Invitation id: 25, invite_code: "324234325", sender_id: 7, invitee_first_name: "Kylo", invitee_last_name: "Ren", invitee_email: "test128@somewhere.com", status: "sent", joined_member_id: nil, created_at: "2016-09-24 03:14:44", updated_at: "2016-09-24 04:16:36", invite_message: nil, sent_at: nil, accepted_at: nil, completed_at: nil, clicked_at: nil, source: nil>], @job_id="5c65184c-8656-42bd-95ce-e0ded78a9a44", @queue_name="development_mailers">

irb(main):004:0> Shoryuken.options
=> {:concurrency=>25, :queues=>[], :aws=>{}, :delay=>0, :timeout=>8, :lifecycle_events=>{:startup=>[], :quiet=>[], :shutdown=>[]}}
irb(main):005:0>

Shoryuken.yml

aws:
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
  receive_message:
    attribute_names:
    - ApproximateReceiveCount
    - SentTimestamp
  region: <%= ENV['AWS_REGION'] %>
  secret_access_key:  <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
  concurrency: 25
  delay: 0
  queues:
    - development_mailers

Как я могу выяснить, почему сообщения не извлекаются и не обрабатываются Shoryuken?

(Я разместил эту проблему на GitHub, но переиздал здесь, не получив ответа).

1 ответ

Оказывается, что форматирование YAML было неправильным. queues не должно быть под aws но на том же уровне. Вот правильная версия:

aws:
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
  receive_message:
    attribute_names:
    - ApproximateReceiveCount
    - SentTimestamp
  region: <%= ENV['AWS_REGION'] %>
  secret_access_key:  <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
concurrency: 25
delay: 0
queues:
   - development_mailers
Другие вопросы по тегам