gpt4 book ai didi

java - 如何在拆分器聚合策略上获取原始消息

转载 作者:行者123 更新时间:2023-11-30 11:09:39 25 4
gpt4 key购买 nike

在我的 route ,我使用拆分器将位置拆分为单个消息。单个消息丰富了一些数据。拆分后我想将所有消息合并为一个。但是当我这样做时,我只得到所有位置,而不是边框​​ XML。

我的 XML:

<order>
<firstname>Max</firstname>
<lastname>Mustermann</lastname>
<positions>
<position>
<articlename>Article 1</articlename>
<amount>1</amount>
</position>
<position>
<articlename>Article 2</articlename>
<amount>2</amount>
</position>
</positions>
</order>

我的路线:

from("activemq:orders")
.split(body().tokenizeXML("POSITION",""), new AggregatePositionsStrategy())
.enrich("direct:getArticleNumber", new addArticleNrToPositionStrategy())
.end()
.to("file://c:/temp")

在路由之后我的 XML 是:

        <position>
<articlenumber>654321</articlenumber>
<articlename>Article 1</articlename>
<amount>1</amount>
</position>
<position>
<articlenumber>123456</articlenumber>
<articlename>Article 2</articlename>
<amount>2</amount>
</position>

插入了新数据,但是order-Border丢失了。我该怎么做才能获取所有数据?

我的 Splitter AggregatePositionsStrategy 是:

public class AggregatePositionsStrategy implements AggregationStrategy {
public Exchange aggregate(Exchange exchange, Exchange response) {

if (exchange == null) {
return response;
}

if (exchange.getIn().getHeader("Artikelnummer") != null && exchange.getIn().getHeader("Artikelnummer").equals("Not Found")) {
exchange.getIn().setHeader("Artikelnummer", "Not Found");
}

if (response.getIn().getHeader("Artikelnummer") != null && response.getIn().getHeader("Artikelnummer").equals("Not Found")) {
exchange.getIn().setHeader("Artikelnummer", "Not Found");
}

String orders = exchange.getIn().getBody(String.class);
String newLine = response.getIn().getBody(String.class);

orders = orders + "\n" + newLine;
exchange.getIn().setBody(orders);

return exchange;
}
}

我知道,我只从拆分的消息中复制正文。但我不知道如何获得原始消息,以获取所有部分。你有想法吗?

最佳答案

另一种选择:您始终可以通过 UnitOfWork 接口(interface)获取路线的原始主体

.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Message originalMessage = (Message)
exchange.getUnitOfWork().getOriginalInMessage();

(do something...)
}
})

关于java - 如何在拆分器聚合策略上获取原始消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28063043/

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