我有一个PHP生产者和一个Java用户,它将通过RabbitMQ进行通信。他们将使用三种不同的消息类型。如果生产者也是Java应用程序,我可以将对象序列化为raw,然后在使用者中执行:
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
Object deserializedBody = SerializationUtils.deserialize(body);
if (deserializedBody instanceof TypeOne) {
TypeOne typeOne = (TypeOne) deserializedBody;
// process with corresponding code
} else if (deserializedBody instanceof TypeTwo) {
TypeTwo typeTwo = (TypeTwo) deserializedBody;
// process with corresponding code
} else if (deserializedBody instanceof TypeThree) {
TypeThree typeThree = (TypeThre) deserializedBody;
// process with corresponding code
} else {
// throw exception
}
}
};
但由于我的制作人是PHP,我必须将消息序列化为JSON字符串。
如何区分三种消息类型?
答案 0 :(得分:2)
AMQP中的消息具有属性,您可以为自己定义一个指定消息类型的属性。但大多数时候人们选择使用"内容类型"和"内容编码"。