2017-02-04 5 views
1

소비자가 대기열 (FIFO 또는 표준 대기열)에서 수신 중이면 생산자가 대기열에서 메시지를 생성합니다.Amazon SQS는이 시나리오에서 어떻게 작동합니까?

  1. Amazon SQS 대기열은 소비자로부터 확인을 받으면 자동으로 대기열에서 메시지를 삭제합니까? 큐가 메시지를 삭제하는 대신 보관하고 다시 배달되지 않도록하는 방법/구성이 있습니까?

  2. 생산자가 대기열에 메시지를 생성합니다. 네트워크 문제로 인해 소비자가 오프라인 상태가됩니다. 얼마 후에 그는 온라인으로 돌아갑니다. 고객이 온라인 상태가되면 소비자에게 메시지 을 전달하겠습니까? 대기열이 소비자로부터 ACK를받지 못했기 때문에 나는 그렇다고 생각한다.

답변

1

나는 당신이 rabbitmq의 관점에서 묻고 있다고 생각합니다. 약간의 차이가 있습니다. sq에있는 아무 대답도 없다. 메시지는 자동으로 삭제되지 않으며 사용자가 메시지를 수락 한 후에도 대기열에 남아 있습니다. 소비자가 메시지를 처리 ​​한 후에는 메시지를 명시 적으로 삭제해야합니다.

Sqs는 소비자의 온라인 오프라인 상태에 대해 걱정하지 않습니다. 소비자는 주기적으로 sqs에 새 항목을 폴링합니다. 메시지가 있으면 사용할 수 있습니다. 소비자가 완료되면 sqs를 호출하여 해당 메시지를 삭제합니다. 그런 다음 다시 새로운 메시지를 찾습니다.

사용자가 메시지 처리를 완료하면 두 가지 요청을 할 수 있습니다. 하나는 다른 대기열에 메시지를 대기열에 넣고 다른 하나는 원래 대기열에서 메시지를 삭제하는 것입니다.

동일한 대기열에있는 여러 소비자를 소유하고있는 경우 메시지 비 가시성 기간 개념이 적용됩니다. 그러한 설정이있는 경우 의견을 물어 보면 더 많은 정보로 업데이트됩니다.

희망이 있습니다.

+0

당신은'소비자가 주기적으로 새로운 품목에 대한 SQS를 조사합니다 .' 소비자가 대기열에서들을 수있는 방법이 있는가? 그리고 대기열은 소비자가 그것을 가져 오는 대신 고객에게 밀어 줄 수 있는가? as pull model은 확장 성이 뛰어난 응용 프로그램에서는 작동하지 않습니다. – user3198603

+1

@ user3198603이 의견과 원래 질문 사이에 실제로는 설명서를 읽은 것 같지 않습니다. 메시지는 [SQS FAQ] (https://aws.amazon.com/sqs/faqs/)에서 설명한대로 긴 폴링 HTTP/S 연결을 통해 소비자에게 푸시됩니다. –

+0

@ user3198603, 적절한 확장 성이 없다면 확장성에 문제가 있다는 생각은 잘못되었습니다. 그것은 많은 근로자들이 매우 짧은 기간에 하나의 서버를 공격 할 때만 고통을 겪습니다. sqs를 사용하면이 두 가지 요소가 제거됩니다 (1) 단일 서버가 아닌 여러 대의 서버가 있습니다. 조회수가 분산되어 있습니다 (2) 높은 빈도로 조회수가 부족합니다. 주파수는 긴 폴 메커니즘으로 낮아집니다. – inquisitive