2013-10-03 5 views
15

RabbitMQ를 사용하고 있습니다. 그러나 큐에 많은 메시지가있는 상황에 이르면 소비자 (Windows 서비스)는 해당 메시지를 모두 가져 오려고 시도한 다음 해당 메시지를 보관하지만 작업을 수행하거나 인식하지 못하는 문제가 발생합니다.RabbitMQ 소비자를 조절하는 방법

준비 상태의 메시지 수가 적을 때 소비자가 처리량을 잘 처리하면 문제가 발생하고 백 로그가있는 경우에만 너무 많은 욕심을 갖게됩니다.

소비자가 한 번에 시도하고 책임지는 최대 메시지 수를 구성하는 방법이 있습니까?

RabbitMQ.Client.ConnectionFactory에있는 RequestedChannelMax 필드가이 설정을 제한한다는 것을 알 수 있습니까?

감사

+0

관련 항목 : http://stackoverflow.com/questions/29841690/how-to-consume-one-message – Nav

답변

21

소비자, 대역폭이 소비자가에 관계없이 실제 메시지 처리 시간 처리 할 수있는만큼의 메시지를 읽을 수 기본적으로.

채널의 QoS (서비스 품질)를 수정하여 프리 페치 값을 설정하여 한 번에 픽업 할 메시지 수를 제한해야합니다. basic.qos here을 확인하십시오. 그것은 3 개의 매개 변수, 크기 (옥텟 단위), 카운트 (한 번에 선택할 전체 메시지 수) 및 전역 플래그를가집니다.

This blog post은 처리량 최적화에 관심이 있고 페이지 아래쪽으로 약 2/3의 프리 페칭에 대해 이야기하는 경우 흥미로운 읽기입니다.

희망 하시겠습니까?

+1

감사합니다. 매우 포괄적 인 답변이며 필요한 부분을 바로 잡았습니다. '_model.BasicQos (0,100, false);' – baynezy

관련 문제