如果您想要在報頭值而不是消息正文上拆分,可以使用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號碼。