2016-09-26 9 views
1

rabbitmq에서 프리 펫 수와 ack 사이의 차이점을 알아야합니까?rabbitmq에서 프리 펫 수와 ack의 차이점은 무엇입니까

또한 다음 문장의 차이점은 무엇입니까 : -

는 프리 페치 수는 10 (10) 소비자 스레드가 생성하지 말 내가 설정 한 경우? 또는 -

내가 10 명의 코스튬을 등록하면 10 개의 스레드가 생성됩니까? 더 효율적입니다 위의

답변

2

프리 페치 수 : 소비자가 대기열에서 읽고 한 번에 하나의 메시지를 따기보다는 내부적으로 오히려 유지한다 얼마나 많은 메시지.

No-Ack : 소비자가 메시지를 소비 한 것을 다시 확인하지 마십시오.

그 둘을 미세 조정하여 셋업에 사용되는

질문의 두 번째 부분을 해결하기 위해 : 당신은 프리 페치는 10, 10 개 소비자가 생성되지 않습니다 계산 설정하지만 단일 소비자가됩니다 을 한 번에 10 개의 메시지를 가져옵니다.

10 명의 소비자를 생성하면 10 개의 스레드 (또는 프로세스)가 생성 될 가능성이 큽니다. 모두 구성 방법에 따라 다릅니다. 대부분 스레드 풀을 사용하고 싶을 것입니다.

2

spring-amqp에 대해 구체적으로 대답하십시오.

prefetchCount=10은 브로커가 각 소비자에 대해 최대 10 개의 고정되지 않은 메시지를 허용한다는 것을 의미합니다. 스레드 수에 영향을주지 않습니다.

concurrentConsumers을 사용하면 여러 소비자를 만들 수 있습니다. 각 소비자마다 하나의 스레드가 생성됩니다.

auto ack는 브로커에 acks가 필요하지 않음을 의미하므로 (메시지를 잃을 수 있음). Spring AMQP는 또한 리스너가 계속 유지할 수없는 경우 배달 (프리 페치 카운트)을 차단합니다.