Author: buildbot Date: Sun Feb 22 16:18:06 2015 New Revision: 941067 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/cassandra.html websites/production/camel/content/rabbitmq.html Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/cassandra.html ============================================================================== --- websites/production/camel/content/cassandra.html (original) +++ websites/production/camel/content/cassandra.html Sun Feb 22 16:18:06 2015 @@ -92,14 +92,14 @@ <version>x.y.z</version> <!-- use the same version as your Camel core version --> </dependency>]]></script> -</div></div><h2 id="Cassandra-URIformat">URI format</h2><p>The endpoint can initiate the Cassandra connection or use an existing one.</p><div class="table-wrap"><table class="confluenceTable"><thead><tr><th colspan="1" rowspan="1" class="confluenceTh">URI</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr></thead><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:localhost/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Single host, default port, usual for testing</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Multi host, default port</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2:9042/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Multi host, custom port</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2</code></td><td colspa n="1" rowspan="1" class="confluenceTd">Default port and keyspace</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:bean:sessionRef</code></td><td colspan="1" rowspan="1" class="confluenceTd">Provided Session reference</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:bean:clusterRef/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Provided Cluster reference</td></tr></tbody></table></div><p>To fine tune the Cassandra connection (SSL options, pooling options, load balancing policy, retry policy, reconnection policy...), create your own Cluster instance and give it to the Camel endpoint.</p><h2 id="Cassandra-EndpointOptions">Endpoint Options</h2><div class="table-wrap"><table class="confluenceTable"><thead><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr></thead><tbody><tr><td c olspan="1" rowspan="1" class="confluenceTd"><p>clusterName</p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>Cluster name</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>username and password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>Session authentication</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cql</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>CQL query. Can be overriden with a message header.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consistencyLevel</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>L OCAL_QUORUM</code>...</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultSetConversionStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">ALL</td><td colspan="1" rowspan="1" class="confluenceTd"><p>How is ResultSet converted transformed into message body <code>ALL</code>, <code>ONE</code>, <code>LIMIT_10</code>, <code>LIMIT_100</code>...</p></td></tr></tbody></table></div><h2 id="Cassandra-Messages">Messages</h2><h3 id="Cassandra-IncomingMessage">Incoming Message</h3><p>The Camel Cassandra endpoint expects a bunch of simple objects (Object[] or Collection<Object>) which will be bound to the CQL statement as query parameters.</p><p>Headers:</p><ul class="task-list"><li><code>CamelCqlQuery</code> (optional, String): CQL query</li></ul><h3 id="Cassandra-OutgoingMessage">Outgoing Message</h3><p>The Camel Cassandra endpoint produces one or many a Cassandra Row objects depending on the resultSetConversionStrategy:</p><p> < /p><ul><li><code>List<Row></code> if resultSetConversionStrategy is ALL or LIMIT_10</li><li><code>Single Row</code> if resultSetConversionStrategy is ONE</li><li>Anything else, if resultSetConversionStrategy is a custom implementation of the ResultSetConversionStrategy</li></ul><h2 id="Cassandra-Repositories">Repositories</h2><p>Cassandra can be used to store messages or messages for the idempotent and aggregation EIP.</p><p>Cassandra might not be the best tool for queuing use cases yet, read <a shape="rect" class="external-link" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets" rel="nofollow">Cassandra anti-patterns queues and queue like datasets</a>. It's advised to use LeveledCompaction and a small GC grace setting for these tables to allow tombstoned rows to be removed quickly.</p><h3 id="Cassandra-Idempotentrepository">Idempotent repository</h3><p>The NamedCassandraIdempotentRepository stores messages keys in a Cassandra table like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>CAMEL_IDEMPOTENT.cql</b></div><div class="codeContent panelContent pdl"> +</div></div><h2 id="Cassandra-URIformat">URI format</h2><p>The endpoint can initiate the Cassandra connection or use an existing one.</p><div class="table-wrap"><table class="confluenceTable"><thead><tr><th colspan="1" rowspan="1" class="confluenceTh">URI</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr></thead><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:localhost/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Single host, default port, usual for testing</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Multi host, default port</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2:9042/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Multi host, custom port</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:host1,host2</code></td><td colspa n="1" rowspan="1" class="confluenceTd">Default port and keyspace</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:bean:sessionRef</code></td><td colspan="1" rowspan="1" class="confluenceTd">Provided Session reference</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>cql:bean:clusterRef/keyspace</code></td><td colspan="1" rowspan="1" class="confluenceTd">Provided Cluster reference</td></tr></tbody></table></div><p>To fine tune the Cassandra connection (SSL options, pooling options, load balancing policy, retry policy, reconnection policy...), create your own Cluster instance and give it to the Camel endpoint.</p><h2 id="Cassandra-EndpointOptions">Endpoint Options</h2><div class="table-wrap"><table class="confluenceTable"><thead><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr></thead><tbody><tr><td c olspan="1" rowspan="1" class="confluenceTd"><p><code>clusterName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>Cluster name</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>username and password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>Session authentication</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cql</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>CQL query. Can be overriden with a message header.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consistencyLevel</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</c ode>, <code>LOCAL_QUORUM</code>...</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>prepareStatements</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>true</code></td><td colspan="1" rowspan="1" class="confluenceTd">Use prepared statement (default) or not</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultSetConversionStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><code>ALL</code></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How is ResultSet converted transformed into message body <code>ALL</code>, <code>ONE</code>, <code>LIMIT_10</code>, <code>LIMIT_100</code>...</p></td></tr></tbody></table></div><h2 id="Cassandra-Messages">Messages</h2><h3 id="Cassandra-IncomingMessage">Incoming Message</h3><p>The Camel Cassandra endpoint expects a bunch of simple objects (<code>Object</code> or <code>Object[]</code> or <code>Collection<Object></code>) which will be bound to the CQL statem ent as query parameters. If message body is null or empty, then  CQL query will be executed without binding parameters.</p><p>Headers:</p><ul class="task-list"><li><code>CamelCqlQuery</code> (optional, <code>String</code> or <code>RegularStatement</code>): CQL query either as a plain String or built using the <code>QueryBuilder</code>.</li></ul><h3 id="Cassandra-OutgoingMessage">Outgoing Message</h3><p>The Camel Cassandra endpoint produces one or many a Cassandra Row objects depending on the <code>resultSetConversionStrategy</code>:</p><p> </p><ul><li><code>List<Row></code> if <code>resultSetConversionStrategy</code> is <code>ALL</code> or <code>LIMIT_[0-9]+</code></li><li>Single<code> Row</code> if <code>resultSetConversionStrategy</code> is <code>ONE</code></li><li>Anything else, if <code>resultSetConversionStrategy</code> is a custom implementation of the <code>ResultSetConversionStrategy</code></li></ul><h2 id="Cassandra-Repositories">Repositories</h2><p>Cas sandra can be used to store message keys or messages for the idempotent and aggregation EIP.</p><p>Cassandra might not be the best tool for queuing use cases yet, read <a shape="rect" class="external-link" href="http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets" rel="nofollow">Cassandra anti-patterns queues and queue like datasets</a>. It's advised to use LeveledCompaction and a small GC grace setting for these tables to allow tombstoned rows to be removed quickly.</p><h3 id="Cassandra-Idempotentrepository">Idempotent repository</h3><p>The <code>NamedCassandraIdempotentRepository</code> stores messages keys in a Cassandra table like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>CAMEL_IDEMPOTENT.cql</b></div><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: sql; gutter: false" type="syntaxhighlighter"><![CDATA[CREATE TABLE CAMEL_IDEMPOTENT ( NAME varchar, -- Repository name KEY varchar, -- Message key PRIMARY KEY (NAME, KEY) ) WITH compaction = {'class':'LeveledCompactionStrategy'} AND gc_grace_seconds = 86400;]]></script> -</div></div><p>This repository implementation uses lightweight transactions (also known as Compare and Set) and requires Cassandra 2.0.7+.</p><p>The CassandraIdempotentRepository can be extended to use a different data model.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>table</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>CAMEL_IDEMPOTENT</code></td><td colspan="1" rowspan="1" class="confluenceTd">Table name</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>pkColumns</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>NAME</code>,<code> KEY</code></td><td colspan="1" rowspan="1" class="confluenceTd">Primary key columns</td></tr><tr><td colspan="1" rowspan="1" clas s="confluenceTd"><code>name</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Repository name, value used for <code>NAME</code> column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>ttl</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Key time to live</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>writeConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to insert/delete key: <code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>readConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to read/check key: <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr></tbody></table></div><h3 id="Cassandra-Aggregationrepository">Aggregation repository</h3><p>The NamedCassandraAggregationRepository stores exchanges by correlation key in a Cassandra table like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>CAMEL_AGGREGATION.cql</b></div><div class="codeContent panelContent pdl"> +</div></div><p>This repository implementation uses lightweight transactions (also known as Compare and Set) and requires Cassandra 2.0.7+.</p><p>Alternatively, the <code>CassandraIdempotentRepository</code> does not have a <code>NAME</code> column and can be extended to use a different data model.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>table</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>CAMEL_IDEMPOTENT</code></td><td colspan="1" rowspan="1" class="confluenceTd">Table name</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>pkColumns</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>NAME</code>,<code> KEY</code></td><td colspan="1" rowspan="1" class="conflu enceTd">Primary key columns</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>name</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Repository name, value used for <code>NAME</code> column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>ttl</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Key time to live</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>writeConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to insert/delete key: <code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>readConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd "> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to read/check key: <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr></tbody></table></div><h3 id="Cassandra-Aggregationrepository">Aggregation repository</h3><p>The <code>NamedCassandraAggregationRepository</code> stores exchanges by correlation key in a Cassandra table like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>CAMEL_AGGREGATION.cql</b></div><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: sql; gutter: false" type="syntaxhighlighter"><![CDATA[CREATE TABLE CAMEL_AGGREGATION ( NAME varchar, -- Repository name KEY varchar, -- Correlation id @@ -108,7 +108,7 @@ PRIMARY KEY (NAME, KEY) ) WITH compaction = {'class':'LeveledCompactionStrategy'} AND gc_grace_seconds = 86400;]]></script> -</div></div><p>The CassandraAggregationRepository can be extended to use a different data model.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>table</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>CAMEL_AGGREGATION</code></td><td colspan="1" rowspan="1" class="confluenceTd">Table name</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>pkColumns</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>NAME</code>,<code>KEY</code></td><td colspan="1" rowspan="1" class="confluenceTd">Primary key columns</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>exchangeIdColumn</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>EXCHANGE_ID</code></td> <td colspan="1" rowspan="1" class="confluenceTd">Exchange Id column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>exchangeColumn</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>EXCHANGE</code></td><td colspan="1" rowspan="1" class="confluenceTd">Exchange content column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>name</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Repository name, value used for <code>NAME</code> column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>ttl</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Exchange time to live</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>writeConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency l evel used to insert/delete exchange: <code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>readConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to read/check exchange: <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr></tbody></table></div></div> +</div></div><p>Alternatively, the <code>CassandraAggregationRepository</code> does not have a <code>NAME</code> column and can be extended to use a different data model.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>table</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>CAMEL_AGGREGATION</code></td><td colspan="1" rowspan="1" class="confluenceTd">Table name</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>pkColumns</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>NAME</code>,<code>KEY</code></td><td colspan="1" rowspan="1" class="confluenceTd">Primary key columns</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>exchangeIdColumn</code></td><td c olspan="1" rowspan="1" class="confluenceTd"><code>EXCHANGE_ID</code></td><td colspan="1" rowspan="1" class="confluenceTd">Exchange Id column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>exchangeColumn</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>EXCHANGE</code></td><td colspan="1" rowspan="1" class="confluenceTd">Exchange content column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>name</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Repository name, value used for <code>NAME</code> column</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>ttl</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Exchange time to live</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>writeConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd">  </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to insert/delete exchange: <code>ANY</code>, <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>readConsistencyLevel</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">Consistency level used to read/check exchange: <code>ONE</code>, <code>TWO</code>, <code>QUORUM</code>, <code>LOCAL_QUORUM</code>…</td></tr></tbody></table></div></div> </td> <td valign="top"> <div class="navigation"> Modified: websites/production/camel/content/rabbitmq.html ============================================================================== --- websites/production/camel/content/rabbitmq.html (original) +++ websites/production/camel/content/rabbitmq.html Sun Feb 22 16:18:06 2015 @@ -110,7 +110,7 @@ </route> </camelContext> ]]></script> -</div></div><p><span style="font-size: 16.0px;line-height: 1.5625;"><br clear="none"></span></p><p><span style="font-size: 16.0px;line-height: 1.5625;">Headers</span></p><p>The following headers are set on exchanges when consuming messages.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.ROUTING_KEY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The routing key that was used to receive the message, or the routing key that will be used when producing a message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXCHANGE_NAME</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The exchange the message was received from</p></td></tr><tr><td colspan="1" rowspa n="1" class="confluenceTd"><p><code>rabbitmq.DELIVERY_TAG</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The rabbitmq delivery tag of the received message</p></td></tr></tbody></table></div></div><p>The following headers are used by the producer. If these are set on the camel exchange then they will be set on the RabbitMQ message.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.ROUTING_KEY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The routing key that will be used when sending the message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXCHANGE_NAME</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The exchange the message wa s received from, or sent to</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CONTENT_TYPE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The contentType to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.PRIORITY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The priority header to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CORRELATIONID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The correlationId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.MESSAGE_ID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The message id to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.DELIVERY_MODE</code></p></td><td colspan= "1" rowspan="1" class="confluenceTd"><p>If the message should be persistent or not</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.USERID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The userId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CLUSTERID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The clusterId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.REPLY_TO</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The replyTo to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CONTENT_ENCODING</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The contentEncoding to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.TY PE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The type to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXPIRATION</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The expiration to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.TIMESTAMP</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The timestamp to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.APP_ID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The appId to set on the RabbitMQ message</p></td></tr></tbody></table></div></div><p>Headers are set by the consumer once the message is received. The producer will also set the headers for downstream processors once the exchange has taken place. Any headers set prior to production that the producer sets will be o verriden.</p><h3 id="RabbitMQ-MessageBody">Message Body</h3><p>The component will use the camel exchange in body as the rabbit mq message body. The camel exchange in object must be convertible to a byte array. Otherwise the producer will throw an exception of unsupported body type.</p><h3 id="RabbitMQ-Samples">Samples</h3><p>To receive messages from a queue that is bound to an exchange A with the routing key B,</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p><span style="font-size: 16.0px;line-height: 1.5625;"><br clear="none"></span></p><p><span style="font-size: 16.0px;line-height: 1.5625;">Headers</span></p><p>The following headers are set on exchanges when consuming messages.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.ROUTING_KEY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The routing key that was used to receive the message, or the routing key that will be used when producing a message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXCHANGE_NAME</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The exchange the message was received from</p></td></tr><tr><td colspan="1" rowspa n="1" class="confluenceTd"><p><code>rabbitmq.DELIVERY_TAG</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The rabbitmq delivery tag of the received message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>rabbitmq.REQUEUE</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14.2:</strong> This is used by the consumer to control rejection of the message. When the consumer is complete processing the exchange, and if the exchange failed, then the consumer is going to reject the message from the RabbitMQ broker. The value of this header controls this behavior. If the value is false (by default) then the message is discarded/dead-lettered. If the value is true, then the message is re-queued. </td></tr></tbody></table></div></div><p>The following headers are used by the producer. If these are set on the camel exchange then they will be set on the RabbitMQ message.</p><div class="confluenceTableSmall"><div class="table-w rap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.ROUTING_KEY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The routing key that will be used when sending the message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXCHANGE_NAME</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The exchange the message was received from, or sent to</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CONTENT_TYPE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The contentType to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.PRIORITY</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The priori ty header to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CORRELATIONID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The correlationId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.MESSAGE_ID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The message id to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.DELIVERY_MODE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the message should be persistent or not</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.USERID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The userId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CLUSTERID</code></p></td><td colspan="1" r owspan="1" class="confluenceTd"><p>The clusterId to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.REPLY_TO</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The replyTo to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.CONTENT_ENCODING</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The contentEncoding to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.TYPE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The type to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.EXPIRATION</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The expiration to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.TIMESTA MP</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The timestamp to set on the RabbitMQ message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>rabbitmq.APP_ID</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The appId to set on the RabbitMQ message</p></td></tr></tbody></table></div></div><p>Headers are set by the consumer once the message is received. The producer will also set the headers for downstream processors once the exchange has taken place. Any headers set prior to production that the producer sets will be overriden.</p><h3 id="RabbitMQ-MessageBody">Message Body</h3><p>The component will use the camel exchange in body as the rabbit mq message body. The camel exchange in object must be convertible to a byte array. Otherwise the producer will throw an exception of unsupported body type.</p><h3 id="RabbitMQ-Samples">Samples</h3><p>To receive messages from a queue that is bound to an exchange A with the routing k ey B,</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from("rabbitmq://localhost/A?routingKey=B") ]]></script> </div></div><p>To receive messages from a queue with a single thread with auto acknowledge disabled.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">