/**
* 转换格式
*
* @param message
* @return
* @throws Exception
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
private Map<String, Object> exchangeMessage(Message message, Logger _log) throws Exception {
log.info("message:"+message);
Map<String, Object> map = new HashMap<String, Object>();
if (message instanceof ObjectMessage) {
Map<String, Object> objectMessage = (Map<String, Object>) ((ObjectMessage) message).getObject();
for (Entry<String, Object> entry : objectMessage.entrySet()) {
String key = entry.getKey();
Object valueO = entry.getValue();
if (valueO instanceof byte[]) {
String value = new String((byte[]) valueO, "GB2312");
map.put(key, value);
} else if (valueO instanceof String) {
String value = (String) valueO;
map.put(key, value);
} else if (valueO instanceof JSONObject) {
String value = valueO.toString();
map.put(key, value);
}
}
} else if (message instanceof MapMessage) {
MapMessage mapMsg = (MapMessage) message;
Enumeration en = mapMsg.getMapNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
Object valueO = mapMsg.getObject(key);
if (valueO instanceof byte[]) {
String value = new String((byte[]) valueO, "GB2312");
map.put(key, value);
} else if (valueO instanceof String) {
String value = (String) valueO;
map.put(key, value);
} else if (valueO instanceof JSONObject) {
String value = valueO.toString();
map.put(key, value);
}
}
}else if(message instanceof StreamMessage){
byte[] messageByte = streamMessageToBytes((StreamMessage)message,_log);
String str = new String(messageByte);
_log.info(str);
JSONObject obj=JSONObject.fromObject(str);
for(Object o : obj.keySet()){
map.put(o.toString(), obj.get(o.toString()));
}
} else if(message instanceof TextMessage){
//一般通过jetty测试工具,发送的是json字符串文本报文,json对象里面的字符串要转义
//不带转化字符
//{"type":"ONLINE_SHIPS","message":{"currentTime":1400077615368,"direction":0,"id":1,"latitude":29.5506,"longitude":106.6466}}
//带转义字符的json格式
// {"type":"ONLINE_SHIPS","message":"{\"currentTime\":1400077615368,\"direction\":0,\"id\":1,\"latitude\":29.5506,\"longitude\":106.6466}"}
TextMessage text = (TextMessage) message;
String str = text.getText();
log.info("text:"+str);
JSONObject obj=JSONObject.fromObject(str);
for(Object o : obj.keySet()){
map.put(o.toString(), obj.get(o.toString()).toString());
}
}else{
throw new Exception("we only support MapMessage,TextMessage, ObjectMessage and StreamMessage!");
}
return map;
}
ActiveMQ消费数据转换数据格式
于 2021-07-29 16:56:20 首次发布