현재 내 응용 프로그램에서 큐를 사용할 수 있도록 루비에서 썼습니다.Ruby에서 Sidekiq 및 unqueueing
class Worker
include Sidekiq::Worker
def perform(params)
sleep 10
@@logger.info("--------------------------")
@@logger.info("Request received")
@@logger.info("--------------------------")
end
end
내 주요 진입 점에서 호출하고 'api.rb'
post '/receive/?' do
@@logger.debug("/retrieve endpoint received")
Worker.perform_async @params
end
슬립은이 작업 벌금마다 호출 : 나는 다음과 같이 작업자 클래스를 정의 sidekiq를 사용하고 있습니다 완료되면 다음 대기중인 작업이 시작됩니다.
제 경우에는 결정할 때만 대기열에있는 다음 항목을 대기열에 추가하거나 시작해야합니다. 외부 이벤트에 의해 트리거됩니다. 내 'api.rb'에서
는, 내가 추가 한 : 코드가 작동
post '/response/?' do
next_task
end
방법은 '/ 수신'(10 개) 요청을 대기 할 수 있다는 것입니다. 첫 번째 요청은 특정 작업 (서버에 게시 명령 보내기)을 트리거합니다.
원격 서버가 '/ response'를 통해 요청을 보내면 작업이 완료되었음을 알립니다. 이 응답을 받으면 'next_task'API를 사용하여 실행중인 이전 작업을 제거하고 이제 완료하고 다음 대기열로 이동합니다.
새 작업을 언큐 (unqueue)하고 시작하기위한 맞춤 트리거를 만드는 방법. 특정 신호를 보낼 때까지 사이드 키 프레임 워크에서 큐를 푸는 것을 피할 수있는 신호가 있습니까? Sidekiq 대기열에서 작업을 삭제하려면 메르
내가하려는 것은 다음 작업의 시작을 제어하는 것입니다. 기본적으로 대기열은 이전 작업이 완료되면 자동으로 새 작업을 시작합니다. 필자의 경우 원격 서버에서 작업이 수행되고 원격 작업이 끝나면 제어 할 수 없기 때문에 요청할 때만 다음 작업을 시작해야합니다. – Seb
예, 그게 제가 쓴 것입니다. 사이드 키 큐를 'wake-up-event'(10 초마다)로 사용하고 실제 큐를 데이터베이스에 저장하십시오. –