Apache Camel 按开始和结束字符 SOH 和 ETX 拆分
Apache Camel Split by start and end characters SOH and ETX
我有一个 spring 引导应用程序,它 routes.xml 在启动时加载
在 routes.xml 上,我有一个包含示例消息的 MQ 队列源
SOH{123}{345}{4
5
6
}ETXSOH{111}{222}{3
3
3
}ETX
其中 SOH = \u0001 和 ETX = \u0003
当我收到这条消息时,我想将消息拆分为两条
{123}{345}{4
5
6
}
和
{111}{222}{3
3
3
}
目前我正在尝试使用
拆分
<split>
<tokenize token="(?s)(?<=\u0001)(.*?)(?=\u0003)" regex="true"/>
<to uri="jms:queue:TEST.OUT.Q" />
</split>
我已经使用在线正则表达式测试器测试了这个正则表达式,它是匹配的。
https://regex101.com/r/fU5VVj/1
但是在运行代码时我得到的是
#1
SOH
#2
ETXSOH
#3
ETX
也尝试了 token 和 endToken 但对我的情况不起作用
<tokenize token="\u0001" endToken="\u0003" />
我的情况可以使用骆驼路线吗xml?如果是,你能指点我更正正则表达式或开始和结束标记吗?
谢谢
camel 正则表达式似乎与 java 正则表达式不同,只是使用下面的示例代码创建了一个新进程
Pattern p = Pattern.compile("(?s)(?<=\u0001).*?(?=\u0003)");
Matcher m = p.matcher(items);
List<String> tokens = new LinkedList<>();
while (m.find()) {
String token = m.group();
System.out.println("item = "+token);
tokens.add(token);
}
我有一个 spring 引导应用程序,它 routes.xml 在启动时加载
在 routes.xml 上,我有一个包含示例消息的 MQ 队列源
SOH{123}{345}{4
5
6
}ETXSOH{111}{222}{3
3
3
}ETX
其中 SOH = \u0001 和 ETX = \u0003
当我收到这条消息时,我想将消息拆分为两条
{123}{345}{4
5
6
}
和
{111}{222}{3
3
3
}
目前我正在尝试使用
拆分<split>
<tokenize token="(?s)(?<=\u0001)(.*?)(?=\u0003)" regex="true"/>
<to uri="jms:queue:TEST.OUT.Q" />
</split>
我已经使用在线正则表达式测试器测试了这个正则表达式,它是匹配的。 https://regex101.com/r/fU5VVj/1
但是在运行代码时我得到的是 #1
SOH
#2
ETXSOH
#3
ETX
也尝试了 token 和 endToken 但对我的情况不起作用
<tokenize token="\u0001" endToken="\u0003" />
我的情况可以使用骆驼路线吗xml?如果是,你能指点我更正正则表达式或开始和结束标记吗?
谢谢
camel 正则表达式似乎与 java 正则表达式不同,只是使用下面的示例代码创建了一个新进程
Pattern p = Pattern.compile("(?s)(?<=\u0001).*?(?=\u0003)");
Matcher m = p.matcher(items);
List<String> tokens = new LinkedList<>();
while (m.find()) {
String token = m.group();
System.out.println("item = "+token);
tokens.add(token);
}