2010-05-08 6 views
2

대기열을 공유 모드로 설정하고 여러 소비자가 바인딩되어있는 곳에 문제가 있습니다. 문제는 rabbitmq가 메시지를 직렬화하는 것, 즉 한 번에 한 명의 소비자 만 실행할 수 있다는 것입니다. 그러나 나는 이것이 평행 할 필요가있다. 그러나 나는 그 방법을 알아낼 수 없다.RabbitMQ는 여러 소비자가있는 대기열에서 메시지를 일련 화합니다.

각 소비자는 자체 프로세스로 실행됩니다. 대기열에는 많은 메시지가 있습니다. RabbitMQ와 인터페이스하기 위해 py-amqplib을 사용하고 있습니다.

의견이 있으십니까?

답변

0

프리 페치 (QOS)는 어떻게됩니까? 작은 대기열에서 큐를 선언하고 현재 사용할 수있는 메시지 수를 얻은 다음 소비자를 첨부하고 메시지를 소비 한 다음 메시지 수가 소비되면이를 닫음으로써 병렬 처리를 수행합니다. 메시지를 확인하지 않고 채널을 닫으면 다른 사용자가 메시지를 사용할 수 있으며 대기열을 충분히 빠르게 폴링 할 수 있고 병렬 처리 솔루션을 사용할 수 있습니다.

0

선호하는 AMQP 모델은 연결된 소비자 당 대기열 인 것 같습니다. "직접"교환을 만들고 소비자가 모두 들어주는 라우팅 키에 동의해야합니다. 그런 다음 연결하는 각 소비자는 독점적 인 전용 비공 인 대기열을 만들어 교환에서 공개 라우팅 키와 일치하는 메시지에 큐를 구독하려면 queue_bind()을 사용해야합니다. 이러한 배열을 사용하여, 나의 작업자는 그들의 작업이 연재되는 대신에 병렬로 작동하게됩니다!

관련 문제