우리는 현재 RabbitMQ (RabbitMQ 3.6.12, Erlang 19.2)의 초당 60-150 개의 메시지를 소비해야하는 마이크로 서비스 (노드 v8.3.0)를 프로토 타이핑하고 있습니다. .1). 때로는 매력처럼 작동하고 대기열에 남아있는 메시지가 없습니다. 그러나 메시지가 갇히지 않는 대부분의 경우 초당 5-20 개의 메시지 만 처리되어 대기열에 최대 3M 개의 메시지가 누적됩니다.처리 방법 AMQP/노드를 사용하여 초당 100 개의 메시지
이제 우리는 단일 소비자로 모든 메시지를 처리하는 방법에 대해 정말로 궁금합니다. 지연없이 모든 메시지를 처리하는 Java 소비자가 이미 있기 때문입니다. amqplib을 기준으로 this node library을 사용합니다. 또한 처리기는 수신 메시지를 즉시 확인합니다. 비즈니스 로직은 절대적으로 비동기입니다. 따라서 비즈니스 논리가 없어도 고착됩니다. 거래 유형이 topic
이고 durable
이 아니며 대기열에 auto-deleting
기능이 사용 설정되어 있습니다. 비활성화 된 프리 페치, 프리 페치 = 1
및 100
을 아무런 성공없이 시도했습니다.
그래서 ..
1)는 노드에 대한 어떤 AMQP/RabbitMQ 라이브러리를 사용합니까?
2) 초당 처리 할 메시지 수는 몇 개입니까?
3) 추가 개선 사항/제안 사항?
감사합니다.
통합 코드가 없으면 대답하기가 정말 어렵습니다. RabbitMQ와 같은 AMQP 서버는 일반적으로 초당 수백 개 이상의 처리가 가능하지만 더 많은 채널 및/또는 연결이 필요합니다. – tadman
https://github.com/lanetix/node-lanetix-amqp-easy#usage - 언급 된 효과는 표시된 예에서도 발생합니다 (connect + consume + console.log). 1 개의 연결, 1 개의 채널, 1 개의 대기열. – fheck
다른 AMQP 라이브러리를 사용해보고 한 번에 둘 이상의 작업자를 실행 해보십시오. – tadman