'SQS'에 해당되는 글 1건

  1. 2018.08.28 [Logstash] AWS SQS + Logstash 구성

[Logstash] AWS SQS + Logstash 구성

Elastic/Logstash 2018. 8. 28. 09:52

가끔 사용하다가도 처음 사용할  때 이해했던 내용과 다르게 기억 될 때가 있습니다.

그래서 또 복습 합니다.


구성은 아래와 같습니다.


File Log --> Logstash Agent --> SQS -->

Logstash Collector --> 

File

Elasticsearch

Logstash Collector --> 

File

Elasticsearch


각 서버의 file log 를 input file 로 읽고 output sqs 로 보냅니다.

그런 후 input sqs 를 읽고 multi output 으로 file 과 elasticsearch 로 저장을 하게 되는 구조 입니다.


여기서 AWS 의 SQS 에 대한 메시지 수명 주기에 대한 이해가 필요 합니다.


원문)

https://aws.amazon.com/ko/sqs/details/


Amazon SQS 메시지 수명 주기

Amazon SQS에 저장된 메시지에는 관리가 쉬우면서도 모든 메시지가 처리되도록 보장하는 수명 주기가 있습니다.


1. 메시지를 보내야 하는 시스템에서는 Amazon SQS 대기열을 선택하고 SendMessage를 사용하여 새 메시지를 전송합니다.

2. 메시지를 처리하는 다른 시스템은 처리할 메시지가 더 많이 필요해지므로 ReceiveMessage를 호출하고, 해당 메시지가 반환됩니다.

3. ReceiveMessage에 의해 메시지가 반환되면 해당 메시지는 제한 시간이 초과할 때까지는 다른 어떤 ReceiveMessage에 의해서도 반환되지 않습니다. 이는 다수의 소비자가 동일한 메시지를 동시에 처리하는 것을 방지합니다.

4. 메시지를 처리하는 시스템에서 메시지 작업을 성공적으로 완료하면, 해당 시스템에서는 다른 시스템에서 해당 메시지를 다시 처리하지 않도록 DeleteMessage를 호출하여 메시지를 대기열에서 제거합니다. 시스템에서 메시지 처리에 실패하는 경우, 제한 시간이 초과하는 즉시 다른 ReceiveMessage 호출을 통해 해당 메시지를 읽습니다.

5. 소스 대기열에 배달 못한 편지 대기열이 연결되어 있는 경우 지정한 최대 배달 시도 횟수에 도달한 이후에는 메시지가 배달 못한 편지 대기열로 이동됩니다.


결국 정리 하면, consumer 가 읽어 가면 다른 consumer 는 이미 읽어간 데이터를 읽어 가지 못합니다. 이유는 위 설명에서와 같이 삭제 되기 때문 입니다.

단일 큐를 사용하면서 큐에 쌓인 메시지의 소비는 다중 consumer 로 처리 하고 단일 저장소로 저장 할 경우 쉽게 구성 할 수 있다는 이야기 였습니다.


여기서 제가 착각한 포인트는 읽어간 메시지가 삭제 되지 않는다는 것이였구요.

이런 오해는 "메시지는 최대 14일 동안 대기열에 보관됩니다." 라는 걸 보고 착각한 것이였습니다.


: