主な回答
探しているものを交換から取得できます。
exchange.getFromEndpoint()
「SOME_URI」で定義されたエンドポイントを返します。
exchange.getFromEndpoint().getEndpointUri()
「SOME_URI」の文字列値を返します
コードが次のようになる可能性があることを意味します。
def myMethod(def inBody, Exchange exchange){
def uri = exchange?.fromEndpoint?.endpointUri
if(uri) {
String parameter1 = extractParameter(uri, 'myParameter1')
String parameter2 = extractParameter(uri, 'myParameter2')
//...rest of code
}
return something
}
/*
* do any kind of processing you want here to manipulate the string
* and return the parameter. This code should work just fine in grails
*/
def extractParameter(String uri, String parameterName) {
def m = uri =~ "${parameterName}=([^&]+)"
return m.find() ? m[0][1] : null
}
同等の Java が優先される場合、これは同じことを行う必要があります。
private static String extractParameter(String uri, String parameterName) {
Matcher m = Pattern.compile(parameterName + "=([^&]+)").matcher(uri);
return m.find() ? m.group(1) : null
}
別
また、何を達成しようとしているのかによっては、fromF DSL を使用してパラメータをルートに直接提供する方がよい場合もあります。そうすれば、コードでパラメーターを使用できるようになり、後でそれらを抽出することを心配する必要がなくなります。
以下のコード スニペットは、 FromF の Camel ドキュメントから取得したものです。
fromF("file://%s?include=%s", path, pattern).toF("mock:%s", result);