2013-07-21 5 views
0

Hy,셀러리가 작업을 저장하는 곳은 어디입니까?

Celery (또는 RabbitMQ)는 예약 된 un-ack 메시지/작업을 어디에 저장합니까? 실패한 경우 복원 된 위치에서? 나는 매개 변수와 함께 코드를 저장한다는 것을 알고 있습니다. 매개 변수가 몇 MB이면 어떨까요? 작업이 많을 때 문제가 될 수 있습니까?

감사합니다.

답변

1

브로커 (RabbitMQ)는 메시지 저장 및 전달을 담당하므로 사용자가 대기중인 (확인되지 ​​않은) 메시지로 실패하면 다른 소비자 (있는 경우)에게 메시지가 다시 배달됩니다. RabbitMQ 엔티티를 메모리 또는 디스크에 저장합니다.

난 당신이

당신은 메시지 인수 또는 큐/교환의 매개 변수에 대해 얘기 코드

과 함께 매개 변수를 저장 뜻 것을 얻을하지 않았다?

메시지 인수를 의미하는 경우 메시지 본문과 함께 저장됩니다.

몇 메가 바이트의 메시지 크기는 정상입니다. 가장 좋은 메시지 크기는 아키텍처에 따라 다르며, 경우에 따라 메시지 크기는 가능한 한 작아야하며 일부에서는 100MB를 관리하지만, 너무 큰 메시지는 AMQP 프로토콜을 위해 설계된 것이 아닙니다.

+0

Tx zaq, 예, 메시지 인수를 의미합니다. 그러나 un-ack 메시지가 디스크에 저장되는 곳은 어디입니까? 이 메시지를 저장하기 위해 어떤 종류의 구조를 사용하는지. 나는이 이론을 알고 싶다. – sergiuz

+1

RabbitMQ는 메시지를 메모리에 저장하려고 시도하지만 노드가 메모리 부족으로 메시지를 디스크로 플러시하면 성능이 저하됩니다. 노드가 메모리 및 디스크 공간 부족시 메시지 수신을 중지합니다. 더 깊게 가고 싶다면 - 소스를 읽으십시오. 그러나 RabbitMQ 개발자가 아닌 최종 사용자이고 학계의 연구원이 아니라면 그런 세부 사항이 필요하지 않을 것입니다. – pinepain

관련 문제