Я использую Spring Cloud AWS для прослушивания очереди, сообщения которой имеют "метаданные" и "тело":
{
"metadata": {
"objectType": "Rabbit"
},
"body": {
"color": "white"
"favoriteFood": "carrots"
}
}
Эта же очередь может также дать мне сообщение, подобное этому:
{
"metadata": {
"objectType": "Laptop"
},
"body": {
"ram": "16GB",
"model": "Macbook Pro"
}
}
Мой слушатель:
@Service
public class MyListener {
@SqsListener(value = "${my.queue.queuename}")
public void handleMessage(MyMessage myMessage) {
System.out.println("Message received from queue: " + myMessage);
}
}
Объект сообщения:
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyMessage {
@JsonProperty(value = "metadata")
private MetaData metadata;
@JsonProperty(value = "body")
private JsonNode body;
// getters and setters
}
Какой хороший способ создать объект «Кролик» или «Портативный компьютер» динамически основывается на теле сообщения?