2017-06-13 45 views
0

我有一個PHP中的生產者和Java中的消費者,它們將通過RabbitMQ進行通信。他們將使用三種不同的消息類型。如果製片人也是一個Java應用程序,我可以只序列化對象爲原料,然後在消費者做:消費不同的消息類型序列化爲json

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

我該如何區分三種消息類型?

回答

1

AMQP中的消息具有屬性,您可以定義一個供您自己使用的指定消息類型的屬性。但大多數時候人們選擇使用「內容類型」和「內容編碼」。