35.7. JMS 스타일 선택기

SQS는 선택기를 허용하지 않지만 Camel Filter EIP를 사용하고 적절한 visibilityTimeout 을 설정하여 이를 효과적으로 달성할 수 있습니다. SQS가 메시지를 디스패치하면 DeleteMessage가 수신되지 않는 한 다른 소비자에게 메시지를 디스패치하려고 시도하기 전에 가시성 타임아웃까지 기다립니다. 기본적으로 Camel은 경로가 실패로 종료되지 않는 한 항상 DeleteMessage를 경로 끝에 보냅니다. 적절한 필터링을 수행하고 경로가 성공적으로 완료되는 경우에도 DeleteMessage를 보내지 않으려면 Filter를 사용합니다.

from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");

위의 코드에서 교환에 적절한 헤더가 없는 경우 필터를 통해 이를 수행하지 않으며 SQS 큐에서도 삭제되지 않습니다. 5000마초가 지나면 다른 사용자에게 메시지가 표시됩니다.