2014-12-31 19 views
7

Próbuję uzyskać prostą obsługę kolejek współpracującą ze środowiskiem Spring Cloud. Udało mi się uruchomić procedurę obsługi wiadomości w kolejce, jednak. Problem, który widzę, polega na tym, że kiedy wysyłam wiadomość do kolejki, mój przewodnik nie jest w stanie rozpakować ładunku do wymaganego obiektu java.Wiosenna chmura - SQS

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

Błąd Dostaję jest

No converter found to convert to class MyMessage 

Jak rozumiem, @MessageMapping powinien używać Jacksona wycofać moje JSON ładunek do obiektu MyMessage. Jednak narzeka, że ​​nie może znaleźć konwertera.

Czy ktoś się z tym zetknął?

Używam wersji Spring Cloud w wersji 1.0.0.BUILD-SNAPSHOT.

Odpowiedz

11

Jackson jest używany tylko wtedy, gdy nagłówek contentType jest ustawiony na wartość application/json w komunikacie SQS. W przeciwnym razie konwertery nie wiedzą, jaki typ zawartości zawiera się w treści komunikatu, a odpowiedni konwerter nie może zostać wybrany.

Jeśli użyjesz QueueMessagingTemplate#convertAndSend jak w reference application, nagłówek contentType zostanie automatycznie ustawiony.

+0

Dziękuję bardzo za oczyszczenie tego. Mogę potwierdzić, że obiekt MyMessage jest teraz tworzony zgodnie z oczekiwaniami po dodaniu nagłówka contentType. – Slihp