当前位置: 首页 > 知识库问答 >
问题:

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

孔欣荣
2023-03-14

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

我有很多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类。

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

共有1个答案

杨选
2023-03-14

Exchange的主体是单个Object。如果要将多个对象添加到交换的主体,则需要使交换的主体成为一个映射、列表或pojo,其中包含设置所有对象的字段。

 类似资料:
  • 我目前正在开发一个应用程序,用于查看谁负责不同的病人,但是我还没有解决如何用不同的对象类型填充一个表格。 下面是我的表视图控制器的代码。TableView 最终将有四个不同的对象类型,所有对象类型都将从数据库中检索。 我希望我的表包含患者对象、用户对象(负责)和关系管理器对象。 下面是我的代码,如果你需要更多的代码,请告诉我:-)。 关系数据是返回的关系管理器对象。此对象包含一个用户对象、一个患者

  • 问题内容: 在Java文件中具有多个类的目的是什么? 编辑: 这可以通过在公共类内部创建内部类来实现,对吗? 问题答案: 是的,它可以。但是,每个文件只能有一个公共顶级类,并且公共顶级类必须与源文件具有相同的名称。 在一个源文件中包含多个类的目的是将相关的支持功能(内部数据结构,支持类等)与主要的公共类捆绑在一起。请注意,不要这样做总是可以的-唯一的影响就是代码的可读性。

  • 如何创建具有整数和字符串输入类型的?如果我创建一个: 这将是一个类型。如果我将其创建为: 这将是类型。我如何创建一个,它可以接受整数和字符串输入类型?谢谢。

  • 问题内容: 例如我有静态字段的类: 我可以使用两个不同的类加载器两次加载该类。我该如何避免呢?这是不安全和危险的。 另外,如果我将instance设置为null,那么是否将两个类的instance都设置为null? 问题答案: 如果你希望跨类加载器为true ,则需要一个公共父类来加载所讨论的类,或者你需要自己指定类加载器。 更新:来自@Pshemo的评论下面的博客中相当一部分内容可能直接来自Ja

  • 另外,如果我将instance设置为null,那么这两个类是否都设置为null?

  • 在我们的应用程序中有一个相当常见的模式。我们在 Xml 中配置一组(或列表)对象,这些对象都实现了一个公共接口。在启动时,应用程序读取 Xml 并使用 JAXB 创建/配置对象列表。我从来没有想出(在多次阅读各种帖子之后)仅使用JAXB来做到这一点的“正确方法”。 例如,我们有一个接口,以及多个具体的实现类,它们具有一些共同的属性,以及一些不同的属性和非常不同的行为。我们用来配置应用程序使用的费用