문제

사람들이 레일 앱에 사용하는 메시지 대기열과 선택 결정의 원동력은 무엇입니까? House equeue Starling Down에 대한 최신 트위터 홍보는 기존의 디자인 결정에 영향을 미칩니다.

나는 배경 작업을 처리하기 위해 메시지 대기열이 필요한 앱에서 작업하고 있습니다. 나는 이것을 많이하지 않았으며, 과거에 내가 본 것들 대부분은 Starling과 Workling에 관한 것이며 정직합니다. 응용 프로그램은 크지 않으며이 솔루션은 충분할 것입니다. 그러나 어느 시점에서 더 큰 앱에 통합 할 것이라고 확신하기 때문에 가능한 최상의 솔루션을 통합하는 경험을 얻고 싶습니다.

Rails 앱에 대해 어떤 메시지 큐를 제안 하시겠습니까 ???

편집 : 제안 해주셔서 감사합니다. 이번 주말에 몇 가지를 살펴 보겠습니다.

다시 편집 : 나는 주변을 둘러 보았고 선택에 약간 압도적이었습니다. 그러나 나는 RabbitMQ를 내가 만들고있는 앱에 워크링과 통합하려고 할 것입니다. 그렇다면 빠른 줄에 대한 지식이 필요하다면 이것을 갖고 그것이 내 필요에 맞는지 여부를 알 것입니다.

편집 : DJ가 나에게 적합한 것을 점점 더 많이 찾는 것이 나에게 적합합니다. 내가 사이트에서 "자라"라면 resque가 내가 향하는 곳이라고 말할 것입니다.

편집 : (2014 년 12 월) 그래서 이것을 물어 본 지 오래되었지만 여전히 약간의 견해 나 투표를 얻는 것을 알았으므로 백그라운드 작업자의 선택과 관련하여 지금 내 접근 방식을 업데이트 할 것이라고 생각했습니다. .

제 생각에는 현재 루비에서 배경 작업을 실행하는 가장 좋은 방법은 Sidekiq를 사용하는 것입니다. 많은 사람들이 Sidekiq 이전에 사용했던 Resque와 같은 기억보다 훨씬 적은 기억을 사용할 수있는 근로자 당 프로세스가 아닌 스레드 작업자에 대해 Sidekiq을 실제로 칭찬했습니다. 이것은 좋지만 나에게 이것은 킬러 기능이 아니 었습니다. Sidekiq와 함께 사이드 티크를 사용함으로써, 작업 일정은 너무 사소한 일이어서 내가 사용했던 가장 쉬운 일정 일정으로, Sidekiq를 사용하기 위해 산들 바람으로 만들었습니다.

도움이 되었습니까?

해결책

업데이트로서, Github는 지연된 작업 대신 Redis에서 Resque로 이동했습니다. 그러나 더 작은 설정을 위해서도 Delayed_job을 권장합니다.

https://github.com/resque/resque

다른 팁

Github의 Chris Wanstrath는 최근 SF Ruby Meetup에서 대기열에 대해 이야기했습니다. 그들은 Shopify의 Delayed_job에 정착하기 전에 Starling, Beanstalk 및 기타 변형을 시도했습니다. 그들은 배경을 사용하면 매우 공격적입니다.

여기에 있습니다 작년의 블로그 게시물 그것은 그들의 DJ로의 이사에 대해 이야기합니다.

내가 지금 어디에 있는지 우리는 몇 년 전에 우리 자신을 굴 렸지만 DJ에서 취급을 개선하기 위해 아이디어를 가져 왔습니다.

추천합니다 지연된 재 무거운 짐을 기대하지 않으면 죽은 간단한 솔루션으로. 장점 : 쉽게 설정하고 모니터링하기 쉽고 간단한 코드에는 외부 종속성이 없습니다. 이전에는 ActiveMessaging (ActiveMQ 및 Stomp와 함께)을 사용했지만 프로젝트의 과잉 이었으므로 단순성을 위해 Delayed_Job으로 전환했습니다.

어쨌든, 당신이 매우 성숙하고 빠른 해결책이 필요하다면 ActiveMQ 아주 좋은 선택입니다. 본격적인 메시지 대기열 솔루션을 유지하는 데 너무 많은 시간을 소비하고 싶지 않다면 실제로 필요하지 않습니다. Delayed_job은 갈 수있는 방법입니다. 여기에 있습니다 좋은 기사 ActiveMQ에 대한 Scribd 경험에 대해.

다음은 몇 가지 Ruby/Rails 솔루션입니다.이 중 하나 이상이 필요에 따라 적합 할 수 있습니다.

http://xph.us/software/beanstalkd

http://rubyforge.org/forum/forum.php?forum_id=19781

http://backgroundrb.rubyforge.org

그리고 Amazon의 호스팅 된 솔루션으로 Ruby/Rails와 더 큰 시스템의 기타 구성 요소를 공유하기위한 대기열을 만들 수 있습니다.

http://aws.amazon.com/sqs

도움이 되었기를 바랍니다!

가고 싶은 메시징 서버는 RabbitMQ입니다. Erlang Coolness, AMQP, Good Ruby Libs.

http://www.bestechvideos.com/2008/12/09/rabbitmq-an-open-source-messaging-broker-t that-just-works

Rany Keddo는 유용한 프레젠테이션 작년에 Railsconf 유럽에서 Starling + Workling에 대해. 그는 당시 사용 가능한 다른 솔루션을 비교했습니다.

Starling + Workling에서 Twitter의 최신 이동이 일반 Rails 앱에 큰 의미는 없습니다. 그들은 규모가 훨씬 더 많으며 데이터 스토어에 레거시 문제가있어 현재 구현을 지나가는 것을 방지 할 수 있습니다.

Beanstalkd 단순히 데몬으로 실행되고 다른 스크립팅 언어로 랩퍼가 있기 때문에 좋은 대안입니다 (미래에 방향을 바꾸거나 다른 언어로 작성된 다른 구성 요소가있는 경우).

이것 링크 또한 이용 가능한 다양한 레일 솔루션의 프로 소드를 잘 비교할 수 있습니다.

나는 사용한다 배경 _job 좋아하는 것 Delayed_job 데이터베이스 기반 큐입니다.

데이터베이스는 트래픽이 너무 많거나 아웃하지 않는 한 괜찮은 대기열을 만듭니다.

내가 background_job (및 Delayed_job)을 좋아하는 이유는 별도의 프로세스가 필요하지 않기 때문입니다. 그들은 Cron을 통해 달릴 수 있습니다. 저에게는 저의 메시징 요구가 저의 빈약 한 Sysadmin 기술보다 훨씬 간단하기 때문에 이것은 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top