2016-09-12 6 views
0

S3에 모든 SQS 메시지를 저장하기 위해 amazon sqs java 확장 클라이언트 라이브러리를 사용하고 있습니다. Amazon SQS 웹 인터페이스를 사용하여 메시지를 삭제하면 S3가 아닌 SQS 대기열에서만 메시지가 삭제됩니다. 그러나 aws java sdk sqs 클라이언트/확장 라이브러리 클라이언트를 사용하면 메시지가 SQS 및 S3 모두에서 삭제됩니다. S3에서 실제 메시지를 유지하려고하지만 SQS 메시지를 제거합니다. aws java sdk sqs 클라이언트 또는 확장 된 클라이언트를 사용하여 프로그래밍 방식으로이 작업을 수행 할 수있는 방법이 있습니까?기본 S3 객체를 삭제하지 않고 SQS 메시지 만 삭제

답변

0

확장 클라이언트 라이브러리의 사용자 정의 버전을 생성 (유지) 할 수는 있지만 장기적으로는 큰 해결책이 아닙니다.

또 다른 대안은 S3 버켓에 업로드 된 각 파일에 대해 자동으로 SQS 메시지를 생성 할 수있는 S3 이벤트 알림을 사용하는 것입니다. 제작자는 S3 API를 사용하여 파일을 업로드하도록 변경해야합니다 (메시지를 대기열에 넣기위한 확장 클라이언트 라이브러리가 아닌). 소비자는 SQS를 계속 사용하여 메시지를 수신하지만 확장되지 않은 일반 라이브러리를 사용합니다. S3 버킷은 configured to send event notifications입니다.

아마도 다른 대안은 SQS 콘솔을 통해 수동으로 수행 한 것을 모방하려고하는 것입니다. 확장 클라이언트 라이브러리를 사용하여 SQS 메시지 (및 S3에 저장된 메시지 본문)를 수신하여 원하는 효과를 얻을 수 있다면 놀라지 않을 것입니다. 그런 다음 일반 클라이언트 라이브러리를 사용하여 메시지를 삭제하십시오. 일반 클라이언트 라이브러리는 메시지의 S3 구성 요소를 인식하지 못하기 때문에 S3 파일을 삭제해서는 안됩니다.

+0

다른 @Rob을 주셔서 감사합니다. 그러나 s3에 저장된 메시지를 삭제하지 않고 웹 인터페이스에서 메시지를 삭제할 수 있었기 때문에 프로그래밍 방식으로도이를 수행 할 수있는 방법이있을 것이라고 생각했습니다. – Kia

+0

@Kia, 나는 당신이 생각할 수있는 다른 길을 가지고 나의 대답을 편집했다. – Rob

+0

감사합니다. @Rob! 불행히도 이미 그것을 시도하고 sqs에서만 메시지를 삭제하기 위해 클라이언트 중 하나를 사용하여 성공했다. – Kia

관련 문제