解析两个不同的消息类型进入相同的消息通道

时间:2017-11-01 11:24:43

标签: java parsing message objectmapper

我们将从同一个MQ队列接收两种类型的消息。这两条消息的结构完全不同,没有共同的领域。我对这两个课程都有相应的POJO。如何巧妙地识别哪个消息对应哪个POJO?

我目前正在做的事情如下:

receivedMessageClassA = objectMapper.readValue(payload, ClassA.class);

检查上面的解析是否成功或检查receiveMessageClassA中是否存在必填字段之一。

如果上述检查失败,请进行第二类解析

receivedMessageClassB = objectMapper.readValue(payload, ClassB.class);

然而,这种方法容易出错,我对它并不完全满意。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

嗯,我认为最好的方法是使用instanceof

if (payload instanceof ClassA)
   receivedMessageClassA = objectMapper.readValue(payload, ClassA.class);
else
   receivedMessageClassB = objectMapper.readValue(payload, ClassB.class);