On March 13, 2014, Phil Mocek wrote:
> Must percent-encoded special characters in a Camel message endpoint URI
> be wrapped in RAW() in order for Camel to correctly process the URI?
Nobody answered my question. Off-list last week, I e-mailed Camel
contributor Claus Ibsen, who is named in relevant tickets, but did not
receive any response from him. I am unauthorized to comment in the
Camel issue tracking system.
It seems that the answer is "yes," and that the Camel documentation does
not reflect this. I still hope to learn whether Camel's aws-sqs URI
scheme syntax (and maybe that of other schemes) has changed or if this
requirement is the result of the bug described in CAMEL-4954.
Following is the related guidance I provided to developers at my
place of business:
Since v2.9.0 or earlier, Camel has had [a bug][1] that causes it
to process some message endpoint URIs incorrectly (in particular,
those URIs that include [percent-encoded][2] [reserved
characters][3]). As a workaround, one can use a slightly
different URI syntax.
According to the seemingly-outdated [Camel documentation of its
aws-sqs scheme][4], given the following:
Queue name: my-sqs-queue
AWS access key: AKIADKB5LS3V6L9XWB2
AWS secret key: wvAUnoM+RLZzdWmyBDI/dLRGEHa8BY57sKjy0tXO
the URI that should be used to configure an application for use of
this queue as a message channel is:
<aws-sqs://my-sqs-queue?accessKey=AKIADKB5LS3V6L9XWB2&secretKey=wvAUnoM%2BRLZzdWmyBDI%2FdLRGEHa8BY57sKjy0tXO>
Instead, we'll use:
<aws-sqs://my-sqs-queue?accessKey=AKIADKB5LS3V6L9XWB2&secretKey=RAW(wvAUnoM%2BRLZzdWmyBDI%2FdLRGEHa8BY57sKjy0tXO)>
The "+" and "/" characters, which sometimes occur in AWS secret
keys, have special meaning in URIs (i.e., they are reserved for
special use in the URI definition), so we percent-encode them in
our aws-sqs URIs just as we would in a URI of any other scheme.
Camel does not handle the result of that encoding correctly, so we
enclose it it in "RAW(" and ")".
RAW() was [added with Camel 2.11][5].
References:
[1]: <https://issues.apache.org/jira/browse/CAMEL-4954>
"CAMEL-4954: Camel 2.9.0 incapable of working with % in endpoint URIs"
[2]: <https://tools.ietf.org/html/std66#section-2.1>
"IETF STD 66: URI Generic Syntax: 2.1. Percent-Encoding"
[3]: <https://tools.ietf.org/html/std66#section-2.2>
"IETF STD 66: URI Generic Syntax: 2.2. Reserved Characters"
[4]: <https://camel.apache.org/aws-sqs#AWS-SQS-URIFormat>
"Apache Camel > Documentation > Components > AWS > AWS-SQS > URI
Format"
[5]: <https://camel.apache.org/camel-2110-release.html>
"Camel 2.11.0 release notes"
--
Phil Mocek
http://mocek.org