public String getMsgContent(Message msg) {
var rst = "";
if (msg instanceof TextMessage) rst = ((TextMessage) msg).getText();
else if(msg instanceof BytesMessage) rst = (BytesMessage) msg.readUTF();
else if(msg instanceof MapMessage) rst = JSONObject.toJSONString(msg);
else if(msg instanceof StreamMessage) rst = ((StreamMessage) msg).readString();
else if(msg instanceof ObjectMessage) rst = JSONObject.toJSONString(msg);
return rst;
}
可能抛出java.io.EOFException异常 如果是BytesMessage类型消息可能是readUTF循环读取结束符后数据异常 改以下代码读取试试
else if (msg instanceof BytesMessage) {
BytesMessage bytesMessage = (BytesMessage) msg;
StringBuilder builder = new StringBuilder();
byte[] b = new byte[1024];
int len;
while((len = bytesMessage.readBytes(b)) != -1) {
builder.append(new String(b, 0, len));
}
rst = builder.toString();
log.info("activemq. bytesMessage消息内容: " + rst);
}
该代码段展示了如何从不同类型的ActiveMQ消息中获取内容,特别处理了BytesMessage类型的异常情况,通过循环读取避免了EOFException。在BytesMessage的处理中,使用StringBuilder逐个字节读取并构建消息内容。
717

被折叠的 条评论
为什么被折叠?



