[Active Job] shoryuken+Amazon SQS로 이동해 보세요.

활성 작업 + shoryuken + SQL에서 Rails의 비동기식 처리가 이루어지므로 주석을 남깁니다.
※ Rails 응용 프로그램은 Docker 환경에서 구축이 완료되는 전제 조건입니다.환경 건설여기.
※ Active Job과 백엔드의 비교는 여기 입니다.

환경

  • Ruby 2.7.2
  • Rails 6.0.3.4
  • MySQL 8.0.20
  • shoryuken 5.0.5
  • Docker version 19.03.13
  • 1. SQL 설정


    먼저 AWS 콘솔에 로그인하여 화면에서 SQL을 설정합니다.
    아마존 단순 대기열 서비스는 완전히 관리된 메시지 대기열 서비스다.
    화면과 설정 등은 2020/11시 물건이다.
    대기열을 생성합니다.

    여기에서 SQL에 대한 세부 설정은 생략되지만 요구 사항에 따라 다양한 설정이 가능합니다.
    대기열의 이름만 지정하고 기본값으로 설정합니다.

    SQS 측의 설정은 여기서 끝납니다.
    이후 로컬 환경에서 액세스할 수 있는 액세스 키가 IAM에 릴리즈되었습니다.

    2. shoryuken 설정


    우선 젬을 넣습니다.
    Gemfile
    gem 'aws-sdk-sqs'
    gem 'shoryuken'
    
    bundle install를 실행하고 shoryuken의 프로필을 추가합니다.
    AWS와의 연결 정보로 발행된 액세스 키 등을 환경 변수로 설정하여 사용합니다.
    열쇠 관리credentials도 괜찮을 것 같은데.(제품의 방침에 따라)
    config/shoryuken.yml
    aws:
      access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
      secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
      region: <%= ENV["AWS_REGION"] %>
    concurrency: 1
    logfile: ./log/shoryuken.log
    queues:
      - development_default
    

    3. 활성 작업 설정


    활동 작업에서 비동기 처리를 실시하다.
    config/application.rb
    require "active_job/railtie"
    
    module App
      class Application < Rails::Application
        ...
        config.active_job.queue_adapter = :shoryuken
        ...
      end
    end
    

    4. 작업의 제작과 동작 확인


    나는 마침내 숙제를 만들려고 한다.
    rails g job shoryuken_sample
    
    app/jobs/shoryuken_sample_job.rb
    class ShoryukenSampleJob < ApplicationJob
      queue_as :default
    
      def perform
        puts '--------------------------------'
        puts '-----------  昇龍拳  ------------'
        puts '--------------------------------'
      end
    end
    
    다음은 동작 확인을 진행하겠습니다.
    $ bundle exec shoryuken -C config/shoryuken.yml
    
    (↑ 내 환경에서, 특히 명령을 집행한 후에는 아무것도 나타나지 않았지만 설레자마자 움직였다.)
    다른 탭의 터미널에서 레일스 콘솔에서 ShoryukenSampleJob 을 정렬하려고 합니다.
    $ rails c
    Loading development environment (Rails 6.0.3.4)
    > ShoryukenSampleJob.set(wait: 5.second).perform_later
    
    Enqueued ShoryukenSampleJob (Job ID: ad754d56-8f50-4864-8b24-69479ef5c7f7) to Shoryuken(development_default) at 2020-11-25 11:32:39 UTC
    => #<ShoryukenSampleJob:0x000055821986c0b8
     @arguments=[],
     @exception_executions={},
     @executions=0,
     @job_id="ad754d56-8f50-4864-8b24-69479ef5c7f7",
     @priority=nil,
     @queue_name="development_default",
     @scheduled_at=1606303959.7208154>
    
    줄을 서서 작업이 방금 시작한 shoryuken 측에서 실행되었는지 확인하십시오.
    --------------------------------
    -----------  昇龍拳  ------------
    --------------------------------
    

    좋은 웹페이지 즐겨찾기