java - 使用camel中的send方法发送对象

标签 java apache-camel

我有一个方法,当特定项目发生时将调用该方法,然后使用它发送消息

obj.addMore(xyz);
Exchange returnExchange = producer.send(theEndpoint, new Processor() {
@Override
public void process(Exchange outExchange) throws Exception {
       ..........
       ..........
     outExchange.getIn().setBody(obj);
  }                             
});

此方法被调用 3 次,当我检查端点上得到的交换时,我发现对于所有 3 次交换,都反射(reflect)了 obj 的最后状态。 IE。; obj(一种数组列表)包含使用 obj.addMore(xyz); 添加的所有字符串。

但我的假设是,对于第一次交换,它应该只包含在第一次调用中添加的一个字符串,第二次交换应该包含两个字符串(在第一次和第二次调用期间添加),依此类推。

可能出现什么问题以及问题出在哪里?还是我的假设是错误的?

最佳答案

每个交换都被赋予相同的对象,以便当您的代码调用时

obj.addMore(xyz)

所有三个交换的正文都将更新。

阻止这种情况发生的一种方法是创建 obj 的副本:

outExchange.getIn().setBody(obj.clone());

关于java - 使用camel中的send方法发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547018/

相关文章:

java - 使用 DynamicReports 创建的 Excel 和 Word 无法正确显示数据

java - 带 mouseEvent 处理的 JPanel 边框

java - 既不是句法也不是语义的错误?

java - 使用Java DSL从WSO2转换为camel : How to forward with URI pattern

java - Camel JMS : how to configure custom message listener when connecting to a topic

java - 在Hadoop中运行Java类

java - RCP 3.x 可编辑 PropertySheet View

java - 如何使用rest dsl指定swagger参数 "format"?

scala 2.10,akka-camel TCP套接字通信

scala - 是否可以在intellij上调试Camel Scala DSL