わかりました、アドバイスの人に感謝します。私は、正規表現を解析する代わりに、弾丸を噛み、正しい方法で物事を行いました。これが私の解決策です:
org.codehaus.jackson.map.ObjectMapperを使用するサービスを構築しました。このクラスは、交換本体を引数として取ります。こんな感じです。
public class ProviderTypeWrangler {
public String getProvider(String json) {
try {
ObjectMapper mapper = new ObjectMapper();
Integration integration;
integration = mapper.readValue(json, Integration.class);
return integration.getProvider();
} catch (JsonParseException e) {
return "";
} catch (JsonMappingException e) {
return "";
} catch (IOException e) {
return "";
}
}
}
次に、ルーティングスリップパターンを使用して、このサービスへのアクセスを提供しました。別のEIPが適切であると誰かが考えた場合、私は提案を受け付けます。とにかく、これがその例です。
public class WufooIntegrationRoutingSlip {
@RoutingSlip
public String slip(String body) {
String answer = "activemq:noProducerDefined";
ProviderTypeWrangler wrangler = new ProviderTypeWrangler();
String producer = wrangler.getProvider(body);
Logger mylogger = Logger.getLogger("log4j.logger.org.apache.camel");
if (!producer.equals("")) {
mylogger.info("Body:"+body);
answer = "activemq:"+producer;
}
return answer;
}
}
次に、camel.xmlファイルで、このルーティングスリップをBeanとして公開しました
<bean id="integrationBean" class="com.wufoo.camel.WufooIntegrationRoutingSlip"/>
そして、そのBeanを使用して、交換を正しいキューにルーティングしました。
<route errorHandlerRef="dlc" autoStartup="true" id="IntegrationQueue" xmlns:ns2="http://camel.apache.org/schema/web" xmlns="http://camel.apache.org/schema/spring">
<description>Send all integrations here. Logic will parse to individual queue based on Provider.</description>
<from uri="activemq:integration"/>
<bean ref="integrationBean"/>
</route>
途中でラクダと春についてたくさん学んだので、正しい方向に押してくれたコメンテーターに感謝します。