Apache Camel:可以在消息体中有多个对象(具有不同的类)吗?

时间:2013-07-04 12:00:56

标签: apache-camel

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

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

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类。

如果我不能这样做,那么最好的方法是什么?我可以尝试将我转换的字符串和信息输入到一个类中,并将该新类放入消息中,但这将导致更改在每个处理器中获取字符串的方式。我想避免这种情况。

1 个答案:

答案 0 :(得分:6)

Exchange的正文是单Object。如果要将多个对象添加到交换的主体,则需要使用您在其中设置所有对象的字段来使交换的主体成为地图,列表或者pojo。