gpt4 book ai didi

java - Apache Camel : How to test for instance of Set

转载 作者:行者123 更新时间:2023-11-30 03:24:15 26 4
gpt4 key购买 nike

有人知道如何测试 route 不同类型的集合吗?

// This processor returns a Collection of 2 Sets
// 1. Set<GoodMessage>
// 2. Set<BadMessage>
.process(new MyGoodBadMessageProcessor())
// Split the result List
.split(body()).choice()
// How do you test for a Set<GoodMessage>??
.when(body().isInstanceOf(Set<GoodMessage>)
.to("direct:good")
.otherwise()
.to("direct:bad")
.endChoice()

背景:(如果有人能找到更好的方法)我有一个处理器,目前的工作原理如下:

@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
Set<UnknownMessage> unknownMessages = message.getBody(Set.class);
Set<GoodMessage> goodMessages = new HashSet<GoodMessage>();

for(UnknownMessage msg: unknownMessages) {
// Simplified logic here
if (msg.isGood()) {
goodMessages.add(msg.getGoodMessage());
}
}

message.setBody(goodMessages);
}

我想更新此内容,现在包含用于报告的 BadMessage:

@Override
public void process(Exchange exchange) throws Exception {
Message message = exchange.getIn();
Set<UnknownMessage> unknownMessages = message.getBody(Set.class);
Set<GoodMessage> goodMessages = new HashSet<GoodMessage>();
Set<BadMessage> badMessages = new HashSet<BadMessage>();

List result = new ArrayList();

for(UnknownMessage msg: unknownMessages) {
// Simplified logic here
if (msg.isGood()) {
goodMessages.add(msg.getGoodMessage());
} else {
badMessages.add(msg.getBadMessage());
}
}

result.add(goodMessages)
result.add(badMessages)
message.setBody(result);
}

最佳答案

你无法通过这种方式获取集合的类型(与camel无关)。您更新 process 方法的方式不需要为错误消息创建不同的端点。

根据消息类型将其发送到不同端点的一种可能方法是在选择之前添加一个处理器,该处理器检查消息类型并添加 header 。然后,您的选择语句可以基于此 header 起作用。

关于java - Apache Camel : How to test for instance of Set<CustomObject>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647444/

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