2014-12-31 6 views
7

Spring Cloud 프레임 워크에서 작동하는 간단한 큐 핸들러를 얻으려고합니다. 그러나 메시지 처리기가 큐를 폴링하는 데 성공했습니다. 내가보고있는 문제는 큐에 메시지를 게시 할 때 내 처리기가 필요한 java 개체로 페이로드를 언 마샬링하지 못하는 것입니다.Spring Cloud - SQS

@MessageMapping("MyMessageQueue") 
@SuppressWarnings("UnusedDeclaration") 
public void handleCreateListingMessage(@Headers Map<String, String> headers, MyMessage message) { 
    //do something with the MyMessage object 
} 

내가지고있어 오류가 내가 알고있는 것처럼, @MessageMapping은 MyMessage 객체로 내 JSON 페이로드를 언 마샬링 잭슨을 사용해야합니다

No converter found to convert to class MyMessage 

입니다. 그러나 그것이 변환기를 찾을 수 없다는 불평.

아무도이 문제를 발견하지 못 했습니까?

스프링 클라우드 1.0.0.BUILD-SNAPSHOT 버전을 사용하고 있습니다.

답변

11

contentType 헤더가 SQS 메시지에서 값 application/json으로 설정된 경우에만 잭슨이 사용됩니다. 그렇지 않으면 변환기는 메시지의 페이로드에 포함 된 콘텐츠 유형을 알지 못하므로 올바른 변환기를 선택할 수 없습니다.

reference application과 같이 QueueMessagingTemplate#convertAndSend을 사용하면 contentType 헤더가 자동으로 설정됩니다.

+0

이 문제를 해결해 주셔서 감사합니다. contentType 헤더를 추가 한 후 MyMessage 개체가 예상대로 만들어 졌는지 확인할 수 있습니다. – Slihp

관련 문제