8

我在 java 中几乎已经准备好使用 jms 和 Camel 的应用程序。弹出我们必须在交换/消息中添加其他信息。可以说这些附加信息实际上是新的 java 对象。将我的新对象添加到交换的最佳方法是什么?

我有很多骆驼处理器处理如下所示的消息:

public class MyProcessor implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        String s = exchange.getIn().getBody(String.class);
        s = magicalTransform(s);
        exchange.getIn().setBody(s, String.class);

        //Now I have to add object of some Info.cass:
        Info info = new Info( new Date() );
        //Can I add it like this? :
        exchange.getIn().setBody(info, Info.class); 
    }

}

问题是如果我可以向 Message 添加许多对象,我将找不到信息。Message 方法:setBody(Object body, Class type) 表明这是可能的,但也有方法:getBody() 表明只有一个 body 类。

如果我不能以这种方式做到这一点,那么最好的方法是什么?我可以尝试将我转换的字符串和信息包装到一个类中,然后将该新类放入消息中,但这会导致在每个处理器中获取字符串的方式发生变化。我想避免这种情况。

4

1 回答 1

9

an 的主体Exchange是一个Object. 如果您想将多个对象添加到您的交换主体,您需要使交换主体成为地图、列表或 pojo,其中包含您在其中设置所有对象的字段。

于 2013-07-04T16:48:57.813 回答