gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:19 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com