如何在 activemq 消息中设置对象属性?
当我使用此方法时,使用 Apache Camel 我什么也得不到!
在 Activemq 中:
BytesMessage byteMessage = session.createBytesMessage();
byteMessage.writeBytes(new byte[1]);
byteMessage.setJMSReplyTo(tempDest);
String correlationId = this.createRandomString();
byteMessage.setJMSCorrelationID(correlationId);
byteMessage.setStringProperty("param1", "x");
HashMap<String, String> map = new HashMap<String, String>();
map.put("param3", "y");
map.put("param4", "z");
byteMessage.setObjectProperty("param2", map);
然后在 Camel 中:
....
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
System.out.println(in.getHeaders().keySet());
Object map= in.getHeaders().get("param2");
System.out.println(map);
}
})
;
在 keySet() 中没有 param2!最后一行的结果是NULL!
最佳答案
Map 不是 setObjectProperty 的有效对象。来自消息的 Javadoc:
“属性值可以是 boolean、byte、short、int、long、float、double 和 String。”
http://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html
关于java - 在 activemq 消息中设置对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20313802/