原因是因为他不支持 对象作为消息进行发送。但是他支持string,byte,序列化,数字类型。
所以将对象转换为byte数组,在转换为对象解析即可
附上相关转换代码。
转换类的名字我叫做DataProcessUtils
/**
* 将对象转换为byte类型,用于 activeMq的消息传入,activeMQ不支持对象传输*
* */
public static byte[] toByteArray(Object obj) {byte[] bytes = null;ByteArrayOutputStream bos = new ByteArrayOutputStream();try {ObjectOutputStream oos = new ObjectOutputStream(bos);oos.writeObject(obj);oos.flush();bytes = bos.toByteArray ();oos.close();bos.close();} catch (IOException ex) {ex.printStackTrace();}return bytes;
}/*** 将对象转换为OBJ类型,用于 activeMq的消息传入后解析** */public static Object ByteToObject(byte[] bytes) {Object obj = null;try {// bytearray to objectByteArrayInputStream bi = new ByteArrayInputStream(bytes);ObjectInputStream oi = new ObjectInputStream(bi);obj = oi.readObject();bi.close();oi.close();} catch (Exception e) {System.out.println("translation" + e.getMessage());e.printStackTrace();}return obj;
}
发送消息的接口部分修改如下:
接收消息的部分修改如下: