Java 使用序列化为json的不同消息类型

Java 使用序列化为json的不同消息类型,java,json,rabbitmq,Java,Json,Rabbitmq,我有一个PHP的生产者和一个Java的消费者,他们将通过RabbitMQ进行通信。他们将使用三种不同的消息类型。如果生产者也是Java应用程序,我可以将对象序列化为原始对象,然后在使用者中执行以下操作: Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, A

我有一个PHP的生产者和一个Java的消费者,他们将通过RabbitMQ进行通信。他们将使用三种不同的消息类型。如果生产者也是Java应用程序,我可以将对象序列化为原始对象,然后在使用者中执行以下操作:

    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字符串


然后如何区分这三种消息类型?

AMQP中的消息具有属性,您可以定义一种属性供自己使用,指定消息类型。但大多数时候,人们选择使用“内容类型”和“内容编码”