java - 在 activemq 消息中设置对象属性

标签 java jms activemq apache-camel

如何在 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/

相关文章:

java - 客户端 JMS 配置 - JMS 集群 - 仅连接到一台服务器

Spring,JMS - 无法为 XML 架构命名空间找到 Spring NamespaceHandler

java - 在运行时获取 JVM 编译器阈值

java - 突然长时间GC停顿的原因

jms - ActiveMQ 如何处理关闭的 session

http - Apache Camel - 从 jms 到 http

java - QueueBrowser 不返回所有消息

java - 使用 Axis 调用 Web 服务中的 SOAPACTION_URI_PROPERTY

Java 套接字无法在 Android 上运行(ECONNREFUSED)

java - JMS 本地事务与 TransactionManager