2013-07-29 3 views
0

완전히 막혔습니다. 서버 간 통신을 위해 SQS를 사용하고 있습니다. 나는 3am에 한 번 큐에 "init_scrape"메시지를 추가한다. 큐는 5 분마다 서버의 스크립트에 의해 폴링되어 큐의 메시지를 확인하고 작업을 실행합니다. 내 이메일 로그입니다 :Amazon SQS - 메시지가 계속 나타납니다.

2013-07-29 03:05:01,857 INFO Queue Messages Found: run_scrape init_scrape 
2013-07-29 03:05:01,858 INFO Init_Scrape Running 
2013-07-29 03:22:45,055 INFO init_scrape deleted from queue 
2013-07-29 03:22:45,211 INFO Queue Messages Found: run_scrape 

이 시점에서 init_scrape는 run_scrape 만 남긴 대기열에서 제거되었습니다. 물론 아무것도 다른 큐에 init_scrape 메시지를 추가하지 않으며, 아직이 다음 로그입니다 :

2013-07-29 03:25:02,054 INFO Queue Messages Found: run_scrape init_scrape 
2013-07-29 03:25:02,055 INFO Init_Scrape Running 
2013-07-29 03:42:44,739 INFO init_scrape deleted from queue 
2013-07-29 03:42:44,879 INFO Queue Messages Found: run_scrape 

는 왜이 경우에도 내 스크립트를 자르기 보인다 그것이 내가 한 번만 큐에 메시지를 보내, 그리고 아직 큐에서 삭제합니까?

편집 : visibility_timeout과 관련이 있습니까?

+1

"init_scrape deleted from queue"가 출력 될 때받은 메시지 (init_scrape)에서 DeleteMessage를 호출하고 있습니까? – jjm

답변

1

SQS는 메시지가 적어도 한 번 이상 배달됩니다 보장합니다. 그들은 여러 번 배달되지 않을 것이라는 확신을하지 않습니다. SQS는 규모면에서 정말 멋지지만 실제로는 규모가 어떻게 만들어 졌는지에 따라 이상한 행동을 취합니다.이 메시지와 메시지가 잘못 전달되어 실제로는 그렇지 않은 프로젝트에 약간의 번거 로움을줍니다. 필요 규모.

+0

http://stackoverflow.com/questions/13484845/what-is-a-good-practice-to-achieve-the-exactly-once-delivery-behavior-with-ama/13490008#13490008 – Jeff

관련 문제