如果您想要在报头值而不是消息正文上拆分,可以使用Camel Splitter EIP并编写自己的方法来处理拆分。
你的路线将是这个样子:
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<split>
<method ref="splitterBean" method="split"/>
Process each SMS here
</split>
</route>
</camelContext>
然后你可以使用MySplitterBean
例如在Apache分离器页面,并写出像这样的方法:
public List<Message> split(@Header(value = "smsReceivers") String header, @Body String body) {
List<Message> answer = new ArrayList<Message>();
// Perform header null checking here
header = header.substring(header.indexOf("=")+1); // Remove var name
String[] parts = header.split(",");
for (String part : parts) {
DefaultMessage message = new DefaultMessage();
message.setHeader("smsReceiver", part);
message.setBody(body);
answer.add(message);
}
return answer;
}
在循环,您可以通过“smsReceiver”标题简单地访问SMS号码。