2014-12-31 18 views
7

Sto cercando di ottenere un semplice gestore di code che funzioni con il framework Spring Cloud. Ho ottenuto con successo che il gestore di messaggi esegue il polling della coda, tuttavia. Il problema che sto vedendo è che quando invio un messaggio alla coda, il mio gestore non riesce a rimuovere il carico del carico nel file java richiesto.Spring Cloud - SQS

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

L'errore che sto ottenendo è

No converter found to convert to class MyMessage 

Da quanto ho capito, il @MessageMapping dovrebbe usare Jackson a unmarshall mia JSON payload in un oggetto MyMessage. Tuttavia si lamenta che non riesce a trovare un convertitore.

Qualcuno si è imbattuto in questo?

Sto usando la versione 1.0.0.BUILD-SNAPSHOT di Spring Cloud.

risposta

11

Jackson viene utilizzato solo se l'intestazione contentType è impostata con il valore application/json nel messaggio SQS. Altrimenti i convertitori non sanno quale tipo di contenuto è contenuto nel carico utile del messaggio e il convertitore giusto non può essere scelto.

Se si utilizza QueueMessagingTemplate#convertAndSend come nell'reference application, l'intestazione contentType verrà impostata automaticamente.

+0

Grazie mille per averlo chiarito. Posso confermare che l'oggetto MyMessage viene ora creato come previsto dopo aver aggiunto l'intestazione contentType. – Slihp

Problemi correlati