You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2019/03/31 15:23:09 UTC
svn commit: r1042911 [38/48] - in /websites/production/camel/content: ./
2007/08/17/ 2008/04/08/ 2008/04/28/ 2009/01/19/ 2009/10/26/ 2012/01/17/
2012/03/01/ 2019/03/ 2019/03/31/
Modified: websites/production/camel/content/servicenow.html
==============================================================================
--- websites/production/camel/content/servicenow.html (original)
+++ websites/production/camel/content/servicenow.html Sun Mar 31 15:23:07 2019
@@ -87,17 +87,17 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="ServiceNow-ServiceNowComponent">ServiceNow Component</h2><p><strong>Available as of Camel 2.18</strong></p><p>The ServiceNow component provides access to all of ServiceNow <a shape="rect" class="external-link" href="https://developer.servicenow.com/app.do#!/rest_api_doc?v=fuji" rel="nofollow">REST API</a>. </p><p>Maven users will need to add the following dependency to their pom.xml for this component:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="ServiceNow-ServiceNowComponent">ServiceNow Component</h2><p><strong>Available as of Camel 2.18</strong></p><p>The ServiceNow component provides access to all of ServiceNow <a shape="rect" class="external-link" href="https://developer.servicenow.com/app.do#!/rest_api_doc?v=fuji" rel="nofollow">REST API</a>. </p><p>Maven users will need to add the following dependency to their pom.xml for this component:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> <dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-servicenow</artifactId>
<version>${camel-version}</version>
</dependency>
</pre>
-</div></div><h3 id="ServiceNow-URIformat">URI format</h3><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ServiceNow-URIformat">URI format</h3><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> servicenow://instanceName?[options]
</pre>
-</div></div><p> </p><h3 id="ServiceNow-Options">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>userName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>The user name to use for authentication</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">password</td><td colspan="1" rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" rowspan="1" class="confluenceTd"><span>The password to use for authentication</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthClientId</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td c
olspan="1" rowspan="1" class="confluenceTd">OAuth2 client id</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthClientSecret</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd"><span>OAuth2 client secret</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthTokenUrl</td><td colspan="1" rowspan="1" class="confluenceTd">https://incenceName.service-now.com/oauth_token.do</td><td colspan="1" rowspan="1" class="confluenceTd">The OAuth2 token url</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">apiUrl</td><td colspan="1" rowspan="1" class="confluenceTd">https://<span>incenceName</span>.service-now.com/api/now</td><td colspan="1" rowspan="1" class="confluenceTd">The ServiceNow API url</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">table</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">The default table, can
be overridden by header CamelServiceNowTable</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">excludeReferenceLink</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd">True to exclude Table API links for reference fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">suppressAutoSysField</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd">True to suppress auto generation of system fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">displayValue</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Return the display value (true), actual value (false), or both (all) for reference fields (default: false)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">inputDisplayValue</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">True to set raw value of input fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">models</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">Defines the default model to use for a table i.e models.incident = my.company.model.Incident</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">mapper</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">ServiceNow component uses Jackson Databind to translate request/response to/from Json and you can customize how it is done by providing a custom ObjectMapper</td></tr></tbody></table></div><p> </p><h3 id="ServiceNow-Headers">Headers</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Name</th><th colspan="1" rowspan="1" class="confluenceTh">Type</th><th colspan="1" rowspan="1" class="confluenceT
h">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowResource</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The resource to access TABLE, AGGREGATE, IMPORT</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowTable</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);">The table to access</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowAction</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenc
eTd"><p><span style="color: rgb(0,0,0);">The action to perform RETRIEVE, CREATE, MODIFY, DELETE, UPDATE</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowModel</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Class</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The data model</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSysId</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">ServiceNow sysy_id</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowQuery</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</
span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">An encoded query</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowDisplayValue</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Return the display value (true), actual value (false), or both (all) for reference fields (default: false)</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowInputDisplayValue</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to set raw value of input fields</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rg
b(0,0,0);">CamelServiceNowExcludeReferenceLink</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to exclude Table API links for reference fields</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Comma-separated field names to return in the response</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowMinFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-sepa
rated list of fields for which to calculate the minimum value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowMaxFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the maximum value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSumFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the sum of the values</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowLimit</span></td><td colsp
an="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Integer</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Limit to be applied on pagination</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowView</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">UI view to determine fields returned in the response.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSuppressAutoSysField</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to suppress auto generation of system fields</span></td></tr><tr><td colspan="1" ro
wspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowAvgFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the average value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowCount</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A boolean flag. You can set this parameter to <strong class="ph b">true</strong> for the number of records returned by the query</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceGroupBy</span></td><td colspan="1" rowspan="1" class="confluenceTd"><sp
an style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The fields to group the returned data by</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceOrderBy</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A list of values to order grouped results by</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceHaving</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">An additional query allowing you to filter the data based on an aggregate operation</span></td></tr></tbody></table></div><p> </p><h3 id="ServiceNo
w-Usageexamples:">Usage examples:</h3><p> </p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p> </p><h3 id="ServiceNow-Options">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>userName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>The user name to use for authentication</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">password</td><td colspan="1" rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" rowspan="1" class="confluenceTd"><span>The password to use for authentication</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthClientId</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td c
olspan="1" rowspan="1" class="confluenceTd">OAuth2 client id</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthClientSecret</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd"><span>OAuth2 client secret</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">oauthTokenUrl</td><td colspan="1" rowspan="1" class="confluenceTd">https://incenceName.service-now.com/oauth_token.do</td><td colspan="1" rowspan="1" class="confluenceTd">The OAuth2 token url</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">apiUrl</td><td colspan="1" rowspan="1" class="confluenceTd">https://<span>incenceName</span>.service-now.com/api/now</td><td colspan="1" rowspan="1" class="confluenceTd">The ServiceNow API url</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">table</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">The default table, can
be overridden by header CamelServiceNowTable</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">excludeReferenceLink</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd">True to exclude Table API links for reference fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">suppressAutoSysField</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd">True to suppress auto generation of system fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">displayValue</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Return the display value (true), actual value (false), or both (all) for reference fields (default: false)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">inputDisplayValue</td><td colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">True to set raw value of input fields</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">models</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">Defines the default model to use for a table i.e models.incident = my.company.model.Incident</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">mapper</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd">ServiceNow component uses Jackson Databind to translate request/response to/from Json and you can customize how it is done by providing a custom ObjectMapper</td></tr></tbody></table></div><p> </p><h3 id="ServiceNow-Headers">Headers</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Name</th><th colspan="1" rowspan="1" class="confluenceTh">Type</th><th colspan="1" rowspan="1" class="confluenceT
h">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowResource</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The resource to access TABLE, AGGREGATE, IMPORT</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowTable</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);">The table to access</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowAction</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenc
eTd"><p><span style="color: rgb(0,0,0);">The action to perform RETRIEVE, CREATE, MODIFY, DELETE, UPDATE</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowModel</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Class</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The data model</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSysId</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">ServiceNow sysy_id</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowQuery</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</
span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">An encoded query</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowDisplayValue</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Return the display value (true), actual value (false), or both (all) for reference fields (default: false)</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowInputDisplayValue</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to set raw value of input fields</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rg
b(0,0,0);">CamelServiceNowExcludeReferenceLink</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to exclude Table API links for reference fields</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Comma-separated field names to return in the response</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowMinFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-sepa
rated list of fields for which to calculate the minimum value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowMaxFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the maximum value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSumFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the sum of the values</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowLimit</span></td><td colsp
an="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Integer</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Limit to be applied on pagination</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowView</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">UI view to determine fields returned in the response.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowSuppressAutoSysField</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">True to suppress auto generation of system fields</span></td></tr><tr><td colspan="1" ro
wspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowAvgFields</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A comma-separated list of fields for which to calculate the average value</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceNowCount</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">Boolean</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A boolean flag. You can set this parameter to <strong class="ph b">true</strong> for the number of records returned by the query</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceGroupBy</span></td><td colspan="1" rowspan="1" class="confluenceTd"><sp
an style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">The fields to group the returned data by</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceOrderBy</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">A list of values to order grouped results by</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">CamelServiceHaving</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">String</span></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">An additional query allowing you to filter the data based on an aggregate operation</span></td></tr></tbody></table></div><p> </p><h3 id="ServiceNo
w-Usageexamples:">Usage examples:</h3><p> </p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:servicenow")
Modified: websites/production/camel/content/shiro-security.html
==============================================================================
--- websites/production/camel/content/shiro-security.html (original)
+++ websites/production/camel/content/shiro-security.html Sun Mar 31 15:23:07 2019
@@ -88,7 +88,7 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="ShiroSecurity-ShiroSecurityComponent">Shiro Security Component</h2><p><strong>Available as of Camel 2.5</strong></p><p>The <strong>shiro-security</strong> component in Camel is a security focused component, based on the Apache Shiro security project.</p><p>Apache Shiro is a powerful and flexible open-source security framework that cleanly handles authentication, authorization, enterprise session management and cryptography. The objective of the Apache Shiro project is to provide the most robust and comprehensive application security framework available while also being very easy to understand and extremely simple to use.</p><p>This camel shiro-security component allows authentication and authorization support to be applied to different segments of a camel route.</p><p>Shiro security is applied on a route using a Camel Policy. A Policy in Camel utilizes a strategy pattern for applying interceptors on Camel Processors. It offering the abil
ity to apply cross-cutting concerns (for example. security, transactions etc) on sections/segments of a camel route.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="ShiroSecurity-ShiroSecurityComponent">Shiro Security Component</h2><p><strong>Available as of Camel 2.5</strong></p><p>The <strong>shiro-security</strong> component in Camel is a security focused component, based on the Apache Shiro security project.</p><p>Apache Shiro is a powerful and flexible open-source security framework that cleanly handles authentication, authorization, enterprise session management and cryptography. The objective of the Apache Shiro project is to provide the most robust and comprehensive application security framework available while also being very easy to understand and extremely simple to use.</p><p>This camel shiro-security component allows authentication and authorization support to be applied to different segments of a camel route.</p><p>Shiro security is applied on a route using a Camel Policy. A Policy in Camel utilizes a strategy pattern for applying interceptors on Camel Processors. It offering the abil
ity to apply cross-cutting concerns (for example. security, transactions etc) on sections/segments of a camel route.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-shiro</artifactId>
@@ -96,7 +96,7 @@
<!-- use the same version as your Camel core version -->
</dependency>
</pre>
-</div></div><h3 id="ShiroSecurity-ShiroSecurityBasics">Shiro Security Basics</h3><p>To employ Shiro security on a camel route, a ShiroSecurityPolicy object must be instantiated with security configuration details (including users, passwords, roles etc). This object must then be applied to a camel route. This ShiroSecurityPolicy Object may also be registered in the Camel registry (JNDI or ApplicationContextRegistry) and then utilized on other routes in the Camel Context.</p><p>Configuration details are provided to the ShiroSecurityPolicy using an Ini file (properties file) or an Ini object. The Ini file is a standard Shiro configuration file containing user/role details as shown below</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-ShiroSecurityBasics">Shiro Security Basics</h3><p>To employ Shiro security on a camel route, a ShiroSecurityPolicy object must be instantiated with security configuration details (including users, passwords, roles etc). This object must then be applied to a camel route. This ShiroSecurityPolicy Object may also be registered in the Camel registry (JNDI or ApplicationContextRegistry) and then utilized on other routes in the Camel Context.</p><p>Configuration details are provided to the ShiroSecurityPolicy using an Ini file (properties file) or an Ini object. The Ini file is a standard Shiro configuration file containing user/role details as shown below</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">[users]
# user 'ringo' with password 'starr' and the 'sec-level1' role
ringo = starr, sec-level1
@@ -117,7 +117,7 @@ sec-level2 = zone1:*
# readonly
sec-level1 = zone1:readonly:*
</pre>
-</div></div><h3 id="ShiroSecurity-InstantiatingaShiroSecurityPolicyObject">Instantiating a ShiroSecurityPolicy Object</h3><p>A ShiroSecurityPolicy object is instantiated as follows</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-InstantiatingaShiroSecurityPolicyObject">Instantiating a ShiroSecurityPolicy Object</h3><p>A ShiroSecurityPolicy object is instantiated as follows</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> private final String iniResourcePath = "classpath:shiro.ini";
private final byte[] passPhrase = {
(byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B,
@@ -136,7 +136,7 @@ sec-level1 = zone1:readonly:*
</div>
-<h3 id="ShiroSecurity-ApplyingShiroAuthenticationonaCamelRoute">Applying Shiro Authentication on a Camel Route</h3><p>The ShiroSecurityPolicy, tests and permits incoming message exchanges containing a encrypted SecurityToken in the Message Header to proceed further following proper authentication. The SecurityToken object contains a Username/Password details that are used to determine where the user is a valid user.</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h3 id="ShiroSecurity-ApplyingShiroAuthenticationonaCamelRoute">Applying Shiro Authentication on a Camel Route</h3><p>The ShiroSecurityPolicy, tests and permits incoming message exchanges containing a encrypted SecurityToken in the Message Header to proceed further following proper authentication. The SecurityToken object contains a Username/Password details that are used to determine where the user is a valid user.</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> protected RouteBuilder createRouteBuilder() throws Exception {
final ShiroSecurityPolicy securityPolicy =
new ShiroSecurityPolicy("classpath:shiro.ini", passPhrase);
@@ -160,7 +160,7 @@ sec-level1 = zone1:readonly:*
};
}
</pre>
-</div></div><h3 id="ShiroSecurity-ApplyingShiroAuthorizationonaCamelRoute">Applying Shiro Authorization on a Camel Route</h3><p>Authorization can be applied on a camel route by associating a Permissions List with the ShiroSecurityPolicy. The Permissions List specifies the permissions necessary for the user to proceed with the execution of the route segment. If the user does not have the proper permission set, the request is not authorized to continue any further.</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-ApplyingShiroAuthorizationonaCamelRoute">Applying Shiro Authorization on a Camel Route</h3><p>Authorization can be applied on a camel route by associating a Permissions List with the ShiroSecurityPolicy. The Permissions List specifies the permissions necessary for the user to proceed with the execution of the route segment. If the user does not have the proper permission set, the request is not authorized to continue any further.</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> protected RouteBuilder createRouteBuilder() throws Exception {
final ShiroSecurityPolicy securityPolicy =
new ShiroSecurityPolicy("./src/test/resources/securityconfig.ini", passPhrase);
@@ -184,7 +184,7 @@ sec-level1 = zone1:readonly:*
};
}
</pre>
-</div></div><h3 id="ShiroSecurity-CreatingaShiroSecurityTokenandinjectingitintoaMessageExchange">Creating a ShiroSecurityToken and injecting it into a Message Exchange</h3><p>A ShiroSecurityToken object may be created and injected into a Message Exchange using a Shiro Processor called ShiroSecurityTokenInjector. An example of injecting a ShiroSecurityToken using a ShiroSecurityTokenInjector in the client is shown below</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-CreatingaShiroSecurityTokenandinjectingitintoaMessageExchange">Creating a ShiroSecurityToken and injecting it into a Message Exchange</h3><p>A ShiroSecurityToken object may be created and injected into a Message Exchange using a Shiro Processor called ShiroSecurityTokenInjector. An example of injecting a ShiroSecurityToken using a ShiroSecurityTokenInjector in the client is shown below</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> ShiroSecurityToken shiroSecurityToken = new ShiroSecurityToken("ringo", "starr");
ShiroSecurityTokenInjector shiroSecurityTokenInjector =
new ShiroSecurityTokenInjector(shiroSecurityToken, passPhrase);
@@ -193,7 +193,7 @@ sec-level1 = zone1:readonly:*
process(shiroSecurityTokenInjector).
to("direct:secureEndpoint");
</pre>
-</div></div><h3 id="ShiroSecurity-SendingMessagestoroutessecuredbyaShiroSecurityPolicy">Sending Messages to routes secured by a ShiroSecurityPolicy</h3><p>Messages and Message Exchanges sent along the camel route where the security policy is applied need to be accompanied by a SecurityToken in the Exchange Header. The SecurityToken is an encrypted object that holds a Username and Password. The SecurityToken is encrypted using AES 128 bit security by default and can be changed to any cipher of your choice.</p><p>Given below is an example of how a request may be sent using a ProducerTemplate in Camel along with a SecurityToken</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-SendingMessagestoroutessecuredbyaShiroSecurityPolicy">Sending Messages to routes secured by a ShiroSecurityPolicy</h3><p>Messages and Message Exchanges sent along the camel route where the security policy is applied need to be accompanied by a SecurityToken in the Exchange Header. The SecurityToken is an encrypted object that holds a Username and Password. The SecurityToken is encrypted using AES 128 bit security by default and can be changed to any cipher of your choice.</p><p>Given below is an example of how a request may be sent using a ProducerTemplate in Camel along with a SecurityToken</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
@Test
public void testSuccessfulShiroAuthenticationWithNoAuthorization() throws Exception {
@@ -213,12 +213,12 @@ sec-level1 = zone1:readonly:*
failureEndpoint.assertIsSatisfied();
}
</pre>
-</div></div><h3 id="ShiroSecurity-SendingMessagestoroutessecuredbyaShiroSecurityPolicy(mucheasierfromCamel2.12onwards)">Sending Messages to routes secured by a ShiroSecurityPolicy (much easier from Camel 2.12 onwards)</h3><p>From <strong>Camel 2.12</strong> onwards its even easier as you can provide the subject in two different ways.</p><h4 id="ShiroSecurity-UsingShiroSecurityToken">Using ShiroSecurityToken</h4><p>You can send a message to a Camel route with a header of key <code>ShiroSecurityConstants.SHIRO_SECURITY_TOKEN</code> of the type <code>org.apache.camel.component.shiro.security.ShiroSecurityToken</code> that contains the username and password. For example:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="ShiroSecurity-SendingMessagestoroutessecuredbyaShiroSecurityPolicy(mucheasierfromCamel2.12onwards)">Sending Messages to routes secured by a ShiroSecurityPolicy (much easier from Camel 2.12 onwards)</h3><p>From <strong>Camel 2.12</strong> onwards its even easier as you can provide the subject in two different ways.</p><h4 id="ShiroSecurity-UsingShiroSecurityToken">Using ShiroSecurityToken</h4><p>You can send a message to a Camel route with a header of key <code>ShiroSecurityConstants.SHIRO_SECURITY_TOKEN</code> of the type <code>org.apache.camel.component.shiro.security.ShiroSecurityToken</code> that contains the username and password. For example:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> ShiroSecurityToken shiroSecurityToken = new ShiroSecurityToken("ringo", "starr");
template.sendBodyAndHeader("direct:secureEndpoint", "Beatle Mania", ShiroSecurityConstants.SHIRO_SECURITY_TOKEN, shiroSecurityToken);
</pre>
-</div></div><p>You can also provide the username and password in two different headers as shown below:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>You can also provide the username and password in two different headers as shown below:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"> Map<String, Object> headers = new HashMap<String, Object>();
headers.put(ShiroSecurityConstants.SHIRO_SECURITY_USERNAME, "ringo");
headers.put(ShiroSecurityConstants.SHIRO_SECURITY_PASSWORD, "starr");
Modified: websites/production/camel/content/simplescheduledroutepolicy.html
==============================================================================
--- websites/production/camel/content/simplescheduledroutepolicy.html (original)
+++ websites/production/camel/content/simplescheduledroutepolicy.html Sun Mar 31 15:23:07 2019
@@ -94,7 +94,7 @@
<p>SimpleScheduledRoutePolicy is a <a shape="rect" href="scheduledroutepolicy.html">ScheduledRoutePolicy</a> that facilitates route activation, de-activation, suspension and resumption of routes based on a <a shape="rect" href="quartz.html">Quartz</a> SimpleTrigger.</p>
<p>Maven users will need to add a <code>camel-quartz</code> dependency to their <code>pom.xml</code> to avail this capability.</p>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<dependency>
<groupId>org.apache.camel</groupId>
@@ -148,7 +148,7 @@
<ul><li>In Java</li></ul>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
long startTime = System.currentTimeMillis() + 3000L;
@@ -166,7 +166,7 @@ from("direct:start")
<ul><li>Using Spring</li></ul>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<bean id="date" class="org.apache.camel.routepolicy.quartz.SimpleDate"/>
Modified: websites/production/camel/content/sjms-batch.html
==============================================================================
--- websites/production/camel/content/sjms-batch.html (original)
+++ websites/production/camel/content/sjms-batch.html Sun Mar 31 15:23:07 2019
@@ -88,22 +88,22 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="SJMSBatch-SJMSBatchComponent">SJMS Batch Component</h2><p><strong>Available as of Camel 2.16</strong></p><p>SJMS Batch is a specialized component for highly performant, transactional batch consumption from a JMS queue. It can be thought of as a hybrid of a consumer-only component and an <a shape="rect" href="aggregator2.html">aggregator</a>.</p><p>A common use case in Camel is to consume messages from a queue and aggregate them before sending the aggregated state to another endpoint. In order to ensure that data is not lost if the system performing the processing fails, it is typically consumed within a transaction from the queue, and once aggregated stored in a persistent <code>AggregationRepository</code>, such as the one found in the <a shape="rect" href="jdbc.html">JDBC Component</a>.</p><p>The behavior of the aggregator pattern involves fetching data from the <code>AggregationRepository</code> before an incoming message is aggregate
d, and writing back the result afterwards. By nature, the reads and writes take progressively longer as the number of aggregated artifacts increases. A rough example of this using arbitrary time units that demonstrates the impact of this is as follows:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Item</th><th colspan="1" rowspan="1" class="confluenceTh">Read Time</th><th colspan="1" rowspan="1" class="confluenceTh">Write Time</th><th colspan="1" rowspan="1" class="confluenceTh">Total Time</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">0</td><td colspan="1" rowspan="1" class="confluenceTd">0</td><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">1</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan
="1" class="confluenceTd">4</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">9</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">16</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">25</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">36</td></tr><tr><td colspan="1" rowspan="1" class="co
nfluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">49</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">64</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">81</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">10</td><td colspan="1" rowspan="1" class="confluenceTd">100</td></tr></tbody></table></div><p>In contrast, consumption performance using the SJMS Batch component is linear. Each message
is consumed and aggregated using an <code>AggregationStrategy</code> before the next one is fetched. As all of the consumption and aggregation is performed in a single JMS transaction no external storage is required to persist the intermediate state - this avoids the read and write costs described above. In practice, this yields multiple orders of magnitude higher throughput.</p><p>Once a completion condition is met, either by size or period since first message, the aggregated <code>Exchange</code> is passed into the route. During the processing of this <code>Exchange</code>, if an exception is thrown or the system shuts down, all of the original consumed messages end up back on the queue (or are placed on the dead-letter queue depending on the broker configuration).</p><p>Unlike using a regular aggregator, there is no facility for an aggregation condition, meaning that it is not possible to batch consume into multiple groups of messages at the same time. All consumed messages are
aggregated together into a single batch. To get around this, a common design approach is to first sort the different groups of messages to be aggregated onto different queues, and batch consume from each one separately.</p><p>Multiple JMS consumer support is available which allows you to consume in parallel using the one route, and at the same time use facilities like JMS message groups to group related messages.</p><p> </p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="SJMSBatch-SJMSBatchComponent">SJMS Batch Component</h2><p><strong>Available as of Camel 2.16</strong></p><p>SJMS Batch is a specialized component for highly performant, transactional batch consumption from a JMS queue. It can be thought of as a hybrid of a consumer-only component and an <a shape="rect" href="aggregator2.html">aggregator</a>.</p><p>A common use case in Camel is to consume messages from a queue and aggregate them before sending the aggregated state to another endpoint. In order to ensure that data is not lost if the system performing the processing fails, it is typically consumed within a transaction from the queue, and once aggregated stored in a persistent <code>AggregationRepository</code>, such as the one found in the <a shape="rect" href="jdbc.html">JDBC Component</a>.</p><p>The behavior of the aggregator pattern involves fetching data from the <code>AggregationRepository</code> before an incoming message is aggregate
d, and writing back the result afterwards. By nature, the reads and writes take progressively longer as the number of aggregated artifacts increases. A rough example of this using arbitrary time units that demonstrates the impact of this is as follows:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Item</th><th colspan="1" rowspan="1" class="confluenceTh">Read Time</th><th colspan="1" rowspan="1" class="confluenceTh">Write Time</th><th colspan="1" rowspan="1" class="confluenceTh">Total Time</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">0</td><td colspan="1" rowspan="1" class="confluenceTd">0</td><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">1</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">1</td><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan
="1" class="confluenceTd">4</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan="1" class="confluenceTd">2</td><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">9</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">3</td><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">16</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">4</td><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">25</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">5</td><td colspan="1" rowspan="1" class="confluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">36</td></tr><tr><td colspan="1" rowspan="1" class="co
nfluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">6</td><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">49</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">7</td><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">64</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">8</td><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">81</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">9</td><td colspan="1" rowspan="1" class="confluenceTd">10</td><td colspan="1" rowspan="1" class="confluenceTd">100</td></tr></tbody></table></div><p>In contrast, consumption performance using the SJMS Batch component is linear. Each message
is consumed and aggregated using an <code>AggregationStrategy</code> before the next one is fetched. As all of the consumption and aggregation is performed in a single JMS transaction no external storage is required to persist the intermediate state - this avoids the read and write costs described above. In practice, this yields multiple orders of magnitude higher throughput.</p><p>Once a completion condition is met, either by size or period since first message, the aggregated <code>Exchange</code> is passed into the route. During the processing of this <code>Exchange</code>, if an exception is thrown or the system shuts down, all of the original consumed messages end up back on the queue (or are placed on the dead-letter queue depending on the broker configuration).</p><p>Unlike using a regular aggregator, there is no facility for an aggregation condition, meaning that it is not possible to batch consume into multiple groups of messages at the same time. All consumed messages are
aggregated together into a single batch. To get around this, a common design approach is to first sort the different groups of messages to be aggregated onto different queues, and batch consume from each one separately.</p><p>Multiple JMS consumer support is available which allows you to consume in parallel using the one route, and at the same time use facilities like JMS message groups to group related messages.</p><p> </p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sjms</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency></pre>
-</div></div><p>SJMS Batch is a subcomponent of <a shape="rect" href="sjms.html">SJMS</a>, and resides in the same library.</p><h4 id="SJMSBatch-URIformat">URI format</h4><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>SJMS Batch is a subcomponent of <a shape="rect" href="sjms.html">SJMS</a>, and resides in the same library.</p><h4 id="SJMSBatch-URIformat">URI format</h4><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">sjms:[queue:]destinationName[?options]
</pre>
-</div></div><p>Where <code>destinationName</code> is a JMS queue. By default, the <code>destinationName</code> is interpreted as a queue name.</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Where <code>destinationName</code> is a JMS queue. By default, the <code>destinationName</code> is interpreted as a queue name.</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">sjms:FOO.BAR
</pre>
-</div></div><p>You can include the optional <code>queue:</code> prefix, if you prefer:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>You can include the optional <code>queue:</code> prefix, if you prefer:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">sjms:queue:FOO.BAR</pre>
-</div></div><p>Topic consumption is not supported, as there is no advantage to using batch consumption within that context. Topic messages are usually non-persistent, and loss is acceptable. If consumed within a transaction that fails, a topic message will likely not be redelivered by the broker. A plain <a shape="rect" href="sjms.html">SJMS</a> consumer endpoint can be used in conjunction with a regular non-persistence backed <a shape="rect" href="aggregator2.html">aggregator</a> in this scenario.</p><h3 id="SJMSBatch-ComponentOptionsandConfigurations">Component Options and Configurations</h3><p>The SJMS Batch Component supports the following configuration options:</p><div class="confluenceTableSmall conf-macro output-block" data-hasbody="true" data-macro-name="div"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Required</p></th><th colspan="1" r
owspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>aggregationStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/check.svg" data-emoticon-name="tick" alt="(tick)"></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code><code>null</code></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to an <code>AggregationStrategy</code> in the Camel registry (e.g. <code>#myAggregationStrategy</code>)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code><code>completionSize</code></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd">
<p><code>200<br clear="none"></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The size of the batch to aggregate.</p><p>Care should be taken to ensure that this is not larger than the JMS consumer's prefetch buffer, or the maximum page size for a queue on the broker; either of these could cause the consumer to hang if no timeout is used.</p><p>A value of 0 or less indicates that <code>completionTimeout</code> only should be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>completionTimeout</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>500</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum time to wait from the receipt of the first message before emitting the Exchange.</p><p>A value of 0 or less indicates that <code style="line-height: 1.42857;">completionSize</code> only should be used.</p><p>Notice you cannot us
e both completion timeout and completion interval at the same time, only one can be configured.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>completionTimeout</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong> The completion interval in millis, which causes batches to be completed in a scheduled fixed rate every interval. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>sendEmptyMessageWhenIdle</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" rowspan="1" class="confluenceTd"
><strong>Camel 2.17:</strong> If using completion timeout or interval, then the batch may be empty if the timeout triggered and there was no messages in the batch. If this option is true and the batch is empty then an empty message is added to the batch so an empty message is routed.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>pollDuration</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum length of a call to <code>MessageConsumer.receive()</code>. The time remaining before timeout takes precedence within a batch.</p><p>This value is effectively the poll time between batches.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>timeoutCheckerExecutorService</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="conflu
enceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong> If using the completionInterval option a background thread is created to trigger the completion interval. Set this option to provide a custom thread pool to be used rather than creating a new thread for every consumer.</td></tr></tbody></table></div></div>
+</div></div><p>Topic consumption is not supported, as there is no advantage to using batch consumption within that context. Topic messages are usually non-persistent, and loss is acceptable. If consumed within a transaction that fails, a topic message will likely not be redelivered by the broker. A plain <a shape="rect" href="sjms.html">SJMS</a> consumer endpoint can be used in conjunction with a regular non-persistence backed <a shape="rect" href="aggregator2.html">aggregator</a> in this scenario.</p><h3 id="SJMSBatch-ComponentOptionsandConfigurations">Component Options and Configurations</h3><p>The SJMS Batch Component supports the following configuration options:</p><div class="confluenceTableSmall conf-macro output-block" data-hasbody="true" data-macro-name="div"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Required</p></th><th colspan="1" r
owspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>aggregationStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/7901/17fbf59dc6f69bee0caf86e0cbbd7fb3bd9d8b4a/_/images/icons/emoticons/check.svg" data-emoticon-name="tick" alt="(tick)"></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code><code>null</code></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to an <code>AggregationStrategy</code> in the Camel registry (e.g. <code>#myAggregationStrategy</code>)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code><code>completionSize</code></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd">
<p><code>200<br clear="none"></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The size of the batch to aggregate.</p><p>Care should be taken to ensure that this is not larger than the JMS consumer's prefetch buffer, or the maximum page size for a queue on the broker; either of these could cause the consumer to hang if no timeout is used.</p><p>A value of 0 or less indicates that <code>completionTimeout</code> only should be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>completionTimeout</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>500</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum time to wait from the receipt of the first message before emitting the Exchange.</p><p>A value of 0 or less indicates that <code style="line-height: 1.42857;">completionSize</code> only should be used.</p><p>Notice you cannot us
e both completion timeout and completion interval at the same time, only one can be configured.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>completionTimeout</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong> The completion interval in millis, which causes batches to be completed in a scheduled fixed rate every interval. The batch may be empty if the timeout triggered and there was no messages in the batch. Notice you cannot use both completion timeout and completion interval at the same time, only one can be configured.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>sendEmptyMessageWhenIdle</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" rowspan="1" class="confluenceTd"
><strong>Camel 2.17:</strong> If using completion timeout or interval, then the batch may be empty if the timeout triggered and there was no messages in the batch. If this option is true and the batch is empty then an empty message is added to the batch so an empty message is routed.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>pollDuration</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum length of a call to <code>MessageConsumer.receive()</code>. The time remaining before timeout takes precedence within a batch.</p><p>This value is effectively the poll time between batches.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>timeoutCheckerExecutorService</code></td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="conflu
enceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong> If using the completionInterval option a background thread is created to trigger the completion interval. Set this option to provide a custom thread pool to be used rather than creating a new thread for every consumer.</td></tr></tbody></table></div></div>
<p>The <code>completionSize</code> endpoint attribute is used in conjunction with <code>completionTimeout</code>, where the first condition to be met will cause the aggregated <code>Exchange</code> to be emitted down the route.</p><p> </p></div>
Modified: websites/production/camel/content/snmp.html
==============================================================================
--- websites/production/camel/content/snmp.html (original)
+++ websites/production/camel/content/snmp.html Sun Mar 31 15:23:07 2019
@@ -88,7 +88,7 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="SNMP-SNMPComponent">SNMP Component</h2><p><strong>Available as of Camel 2.1</strong></p><p>The <strong>snmp:</strong> component gives you the ability to poll SNMP capable devices or receiving traps.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="SNMP-SNMPComponent">SNMP Component</h2><p><strong>Available as of Camel 2.1</strong></p><p>The <strong>snmp:</strong> component gives you the ability to poll SNMP capable devices or receiving traps.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default"><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-snmp</artifactId>
@@ -96,19 +96,19 @@
<!-- use the same version as your Camel core version -->
</dependency>
</pre>
-</div></div><h3 id="SNMP-URIformat">URI format</h3><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="SNMP-URIformat">URI format</h3><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">snmp://hostname[:port][?Options]
</pre>
</div></div><p>The component supports polling OID values from an SNMP enabled device and receiving traps.</p><p>You can append query options to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="SNMP-Options">Options</h3><div class="confluenceTableSmall conf-macro output-block" data-hasbody="true" data-macro-name="div"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>type</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>none</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The type of action you want to perform. Actually you can enter here <code>POLL</code> or <code>TRAP</code>. The value <code>POLL</code> will instruct
the endpoint to poll a given host for the supplied OID keys. If you put in <code>TRAP</code> you will setup a listener for SNMP Trap Events.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>protocol</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>udp</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Here you can select which protocol to use. You can use either <code>udp</code> or <code>tcp</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>retries</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Defines how often a retry is made before canceling the request.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>timeout</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1500</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the ti
meout value for the request in millis.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>snmpVersion</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code> (which means SNMPv1)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the snmp version for the request.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>snmpCommunity</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>public</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the community octet string for the snmp request.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>delay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>60</code> seconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Defines the delay in seconds between to poll cycles. From <strong>Camel 2.15</strong> onwards the delay is using millis as its timeunit, so configu
re 30000 for 30 seconds. Older releases uses the value in seconds.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>oids</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>none</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Defines which values you are interested in. Please have a look at the <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Object_identifier" rel="nofollow">Wikipedia </a> to get a better understanding. You may provide a single OID or a coma separated list of OIDs. Example: oids="1.3.6.1.2.1.1.3.0,1.3.6.1.2.1.25.3.2.1.5.1,1.3.6.1.2.1.25.3.5.1.1.1,1.3.6.1.2.1.43.5.1.1.11.1"</p></td></tr></tbody></table></div></div>
-<h3 id="SNMP-Theresultofapoll">The result of a poll</h3><p>Given the situation, that I poll for the following OIDs:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>OIDs</b></div><div class="codeContent panelContent pdl">
+<h3 id="SNMP-Theresultofapoll">The result of a poll</h3><p>Given the situation, that I poll for the following OIDs:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>OIDs</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">1.3.6.1.2.1.1.3.0
1.3.6.1.2.1.25.3.2.1.5.1
1.3.6.1.2.1.25.3.5.1.1.1
1.3.6.1.2.1.43.5.1.1.11.1
</pre>
-</div></div><p>The result will be the following:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Result of toString conversion</b></div><div class="codeContent panelContent pdl">
+</div></div><p>The result will be the following:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Result of toString conversion</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; gutter: false; theme: Default" data-theme="Default"><?xml version="1.0" encoding="UTF-8"?>
<snmp>
<entry>
@@ -133,13 +133,13 @@
</entry>
</snmp>
</pre>
-</div></div><p>As you maybe recognized there is one more result than requested....1.3.6.1.2.1.1.1.0.<br clear="none"> This one is filled in by the device automatically in this special case. So it may absolutely happen, that you receive more than you requested...be prepared.</p><h3 id="SNMP-Examples">Examples</h3><p>Polling a remote device:</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>As you maybe recognized there is one more result than requested....1.3.6.1.2.1.1.1.0.<br clear="none"> This one is filled in by the device automatically in this special case. So it may absolutely happen, that you receive more than you requested...be prepared.</p><h3 id="SNMP-Examples">Examples</h3><p>Polling a remote device:</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">snmp:192.168.178.23:161?protocol=udp&type=POLL&oids=1.3.6.1.2.1.1.5.0
</pre>
-</div></div><p>Setting up a trap receiver (<strong>Note that no OID info is needed here!</strong>):</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Setting up a trap receiver (<strong>Note that no OID info is needed here!</strong>):</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">snmp:127.0.0.1:162?protocol=udp&type=TRAP
</pre>
-</div></div><p><strong>From Camel 2.10.0</strong>, you can get the community of SNMP TRAP with message header 'securityName',<br clear="none"> peer address of the SNMP TRAP with message header 'peerAddress'.</p><p>Routing example in Java: (converts the SNMP PDU to XML String)</p><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p><strong>From Camel 2.10.0</strong>, you can get the community of SNMP TRAP with message header 'securityName',<br clear="none"> peer address of the SNMP TRAP with message header 'peerAddress'.</p><p>Routing example in Java: (converts the SNMP PDU to XML String)</p><div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">from("snmp:192.168.178.23:161?protocol=udp&type=POLL&oids=1.3.6.1.2.1.1.5.0").
convertBodyTo(String.class).
to("activemq:snmp.states");
Modified: websites/production/camel/content/sort.html
==============================================================================
--- websites/production/camel/content/sort.html (original)
+++ websites/production/camel/content/sort.html Sun Mar 31 15:23:07 2019
@@ -105,14 +105,14 @@
<h3 id="Sort-UsingfromJavaDSL">Using from Java DSL</h3>
<p>In the route below it will read the file content and tokenize by line breaks so each line can be sorted. </p>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
from("file://inbox").sort(body().tokenize("\n")).to("bean:MyServiceBean.processLine");
</pre>
</div></div>
<p>You can pass in your own comparator as a 2nd argument:</p>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
from("file://inbox").sort(body().tokenize("\n"), new MyReverseComparator()).to("bean:MyServiceBean.processLine");
</pre>
@@ -122,7 +122,7 @@ from("file://inbox").sort(body().tokeniz
<h3 id="Sort-UsingfromSpringDSL">Using from Spring DSL</h3>
<p>In the route below it will read the file content and tokenize by line breaks so each line can be sorted. </p>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.7 or better</b></div><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.7 or better</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<route>
<from uri="file://inbox"/>
@@ -134,7 +134,7 @@ from("file://inbox").sort(body().tokeniz
</pre>
</div></div>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.6 or older</b></div><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.6 or older</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<route>
<from uri="file://inbox"/>
@@ -149,7 +149,7 @@ from("file://inbox").sort(body().tokeniz
</div></div>
<p>And to use our own comparator we can refer to it as a spring bean:</p>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.7 or better</b></div><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.7 or better</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<route>
<from uri="file://inbox"/>
@@ -163,7 +163,7 @@ from("file://inbox").sort(body().tokeniz
</pre>
</div></div>
-<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.6 or older</b></div><div class="codeContent panelContent pdl">
+<div class="code panel pdl conf-macro output-block" style="border-width: 1px;" data-hasbody="true" data-macro-name="code"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Camel 2.6 or older</b></div><div class="codeContent panelContent pdl">
<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; gutter: false; theme: Default" data-theme="Default">
<route>
<from uri="file://inbox"/>