2017-10-03 5 views
0

messagegroupid 매개 변수를 사용하여 필요한 id로 태그 된 대기열 메시지 만 수신하려면 어떻게합니까?SQS FIFO MessageGroupId를 사용하여 메시지 수신

나는 아래 줄을 사용하여 검색하려고 노력했지만 항상 다른 그룹 ID의 모든 대기열 메시지도 수신합니다.

List<Message> messages = sqs.receiveMessage(receiveMessageRequest.withAttributeNames("MessageGroupId")).getMessages();

는 무엇을 할 수있는 올바른 방법을해야 하는가?

답변

0

ReceiveMessageRequest은 메시지 속성을 기반으로 필터링하는 데 사용되지 않습니다. ReceiveMessageRequest.html.withAttributeNames()에 대한 문서를 보면 다음과 같이 표시됩니다.

각 메시지와 함께 반환해야하는 속성 목록입니다.

일반적으로 SQS에서받은 메시지는 필터링 할 수 없습니다. 번호를 제한 할 수는 있지만 예를 들어 "이 패턴과 일치하는 모든 메시지 제공"과 같이 말할 수는 없습니다.

+0

답장을 보내 주셔서 감사합니다. 다른 messagegroupid를 가진 메시지를 처리하기 위해 2 개의 별도 큐가 있어야한다는 뜻입니까? 이 방법은 다른 그룹 id에 대한 메시지를받지 못합니다. – JustStarted

+0

@JustStarted - 문제에 대한 매우 쉬운 해결책이 될 것입니다. 일반적으로 대기열을 쉽게 생성 할 수 있으며 데이터를 분할 할 수있어 설계를 단순화 할 수 있습니다. – stdunbar