camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Camel: JMS (page edited)
Date Tue, 09 Dec 2008 11:29:00 GMT
<html>
<head>
    <base href="http://cwiki.apache.org/confluence" />
    <style type="text/css">
    <!--
    body, p, td, table, tr, .bodytext, .stepfield {
	font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	color: #000000;
	font-weight: normal;
}
#PageContent {
	text-align: left;
	background-color: #fff;
	padding: 0px;
	margin: 0px;
    padding-bottom:20px;
}
/*
** when this stylesheet is used for the Tiny MCE Wysiwyg editor's edit area, we can't
** use an id=PageContent or class=wiki-content, so we must
** set the body style to that used for PageContent, and p to that used for wiki-content.
*/

body {
	margin: 0px;
	padding: 0px;
	text-align: center;
    background-color: #f0f0f0;
}

@media print {

body {
    background-color: #fff;
}

}

.monospaceInput {
    font:12px monospace
}

.wiki-content p, .commentblock p {
    margin: 16px 0px 16px 0px;
    padding: 0px;
}

.wiki-content-preview {
    padding: 5px;
    border-left: 1px solid #3c78b5;
    border-right: 1px solid #3c78b5;
}

ul, ol {
    margin-top: 2px;
    margin-bottom: 2px;
    padding-top: 0px;
    padding-bottom: 0px;
}

pre {
    padding: 0px;
    margin-top: 5px;
    margin-left: 15px;
    margin-bottom: 5px;
    margin-right: 5px;
    text-align: left;
}

.helpheading {
    font-weight: bold;
    background-color: #D0D9BD;
        border-bottom: 1px solid #3c78b5;
        padding: 4px 4px 4px 4px;
        margin: 0px;
        margin-top: 10px;
}
.helpcontent {
        padding: 4px 4px 20px 4px;
    background-color: #f5f7f1;
}

.code {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.focusedComment {
    background: #ffffce;
}

.commentBox, .focusedComment {
    padding: 10px;
    margin: 5px 0 5px 0;
    border: 1px #bbb solid;
}

.codeHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.codeContent {
    text-align: left;
    background-color: #f0f0f0;
    padding: 3px;
}

.preformatted {
 	border: 1px dashed #3c78b5;
    font-size: 11px;
	font-family: Courier;
    margin: 10px;
	line-height: 13px;
}

.preformattedHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.preformattedContent {
    background-color: #f0f0f0;
    padding: 3px;
}

.panel {
 	border: 1px dashed #3c78b5;
    margin: 10px;
    margin-top: 0px;
}

.panelHeader {
    background-color: #f0f0f0;
 	border-bottom: 1px dashed #3c78b5;
    padding: 3px;
	text-align: center;
}

.panelContent {
    background-color: #f0f0f0;
    padding: 5px;
}

.anonymousAlert {
    background-color: #f0f0f0;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}

.lockAlert {
    background-color: #f0f0f0;
    width: 50%;
 	border: 1px dashed red;
    font-size: 11px;
    padding: 10px 5px 10px 5px;
    margin: 4px;
	line-height: 13px;
}


.code-keyword {
  color: #000091;
  background-color: inherit;
}

.code-object {
  color: #910091;
  background-color: inherit;
}

.code-quote {
  color: #009100;
  background-color: inherit;
}

.code-comment {
  color: #808080;
  background-color: inherit;
}


.code-xml .code-keyword {
  color: inherit;
  font-weight: bold;
}

.code-tag {
  color: #000091;
  background-color: inherit;
}

.breadcrumbs {
    background-color: #f0f0f0;
 	border-color: #3c78b5;
	border-width: 1px 0px 1px 0px;
	border-style: solid;
    font-size: 11px;
    padding: 3px 0px 3px 0px;
}

.navmenu {
    border: 1px solid #ccc;
}

.menuheading {
    font-weight: bold;
    background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 2px 4px;
}

.menuitems {
	padding: 4px 4px 20px 4px;
}

.rightpanel {
    border-left: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
}

#helpheading {
    text-align: left;
    font-weight: bold;
    background-color: #D0D9BD;
 	border-bottom: 1px solid #3c78b5;
	padding: 4px 4px 4px 4px;
	margin: 0px;
}
#helpcontent {
	padding: 4px 4px 4px 4px;
    background-color: #f5f7f1;
}
.helptab-unselected {
    font-weight: bold;
	padding: 5px;
    background-color: #f5f7f1;
}
.helptab-selected {
    font-weight: bold;
    background-color: #D0D9BD;
	padding: 5px;
}
.helptabs {
    margin: 0px;
    background-color: #f5f7f1;
	padding: 5px;
}
.infopanel-heading {
    font-weight: bold;
	padding: 4px 0px 2px 0px;
}

.pagebody {
}

.pageheader {
	padding: 5px 5px 5px 0px;
 	border-bottom: 1px solid #3c78b5;
}

.pagetitle {
	font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.newpagetitle {
    color: #ccc !important;
}

.steptitle {
	font-size: 18px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
	margin-bottom: 7px;
}

.substeptitle {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
    margin: 2px 4px 4px 4px;
    padding: 2px 4px 1px 4px;
}

.stepdesc {
    font-family: Verdana, arial, sans-serif;
	font-size: 11px;
	line-height: 16px;
	font-weight: normal;
    color: #666666;
    margin-top: 7px;
    margin-bottom: 7px;
}

.steplabel {
    font-weight: bold;
    margin-right: 4px;
    color: black;
    float: left;
    width: 15%;
    text-align: right;
}

.stepfield {
    background: #f0f0f0;
    padding: 5px;
}

.submitButtons{
    margin-top:5px;
    text-align:right;
}

.formtitle {
	font-size: 12px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: #003366;
}

.sectionbottom {
    border-bottom: 1px solid #3c78b5;
}

.topRow {
    border-top: 2px solid #3c78b5;
}

.tabletitle {
	font-size: 14px;
	font-weight: bold;
	font-family: Arial, sans-serif;
    padding: 3px 0px 2px 0px;
    margin: 8px 4px 2px 0px;
	color: #003366;
	border-bottom: 2px solid #3c78b5;
}
.pagesubheading {
    color: #666666;
    font-size: 10px;
    padding: 0px 0px 5px 0px;
}

HR {
	color: 3c78b5;
	height: 1;
}

A:link, A:visited, A:active, A:hover {
	color: #003366;
}

h1 A:link, h1 A:visited, h1 A:active {
	text-decoration: none;
}

h1 A:hover {
    border-bottom: 1px dotted #003366;
}

.wiki-content > :first-child, .commentblock > :first-child {
    margin-top: 3px;
}

.logocell {
    padding: 10px;
}

input {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #000000;
}

textarea, textarea.editor {
	font-family: verdana, geneva, arial, sans-serif;
	font-size: 11px;
	color: #333333;
}

/* use logoSpaceLink instead.
.spacenametitle {
	font: 21px/31px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle img {
  margin: 0 0 -4px 0;
}
.spacenametitle a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle a:visited {
    text-decoration: none;
    color: #999999;
}*/

.spacenametitle-printable {
	font: 20px/25px Impact, Arial, Helvetica;
    font-weight: 100;
    color: #999999;
	margin: 0px;
}
.spacenametitle-printable a {
    text-decoration: none;
    color: #999999;
}
.spacenametitle-printable a:visited {
    text-decoration: none;
    color: #999999;
}

.blogDate {
	font-weight: bold;
	text-decoration: none;
	color: black;
}

.blogSurtitle {
    background: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.blogHeading {
    font-size: 20px;
    line-height: normal;
    font-weight: bold;
    padding: 0px;
    margin: 0px;
}

.blogHeading a {
   text-decoration: none;
   color: black;
}

.endsection {
	align: right;
	color: #666666;
	margin-top: 10px;
}
.endsectionleftnav {
	align: right;
	color: #666666;
	margin-top: 10px;
}

h1 {
	font-size: 24px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	color: #003366;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 36px 0px 4px 0px;
}

h2 {
	font-size: 18px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
 	border-bottom: 1px solid #3c78b5;
	padding: 2px;
	margin: 27px 0px 4px 0px;
}

h3 {
	font-size: 14px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 21px 0px 4px 0px;
}

h4 {
	font-size: 12px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 18px 0px 4px 0px;
}

h4.search {
	font-size: 12px;
	line-height: normal;
	font-weight: normal;
	background-color: #f0f0f0;
	padding: 4px;
	margin: 18px 0px 4px 0px;
}

h5 {
	font-size: 10px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

h6 {
	font-size: 8px;
	line-height: normal;
	font-weight: bold;
	background-color: #f0f0f0;
	padding: 2px;
	margin: 14px 0px 4px 0px;
}

.smallfont {
    font-size: 10px;
}
.descfont {
    font-size: 10px;
    color: #666666;
}
.smallerfont {
    font-size: 9px;
}
.smalltext {
    color: #666666;
    font-size: 10px;
}
.smalltext a {
    color: #666666;
}
.smalltext-blue {
    color: #3c78b5;
    font-size: 10px;
}
.surtitle {
    margin-left: 1px;
    margin-bottom: 5px;
    font-size: 14px;
    color: #666666;
}

/* css hack found here:  http://www.fo3nix.pwp.blueyonder.co.uk/tutorials/css/hacks/ */
.navItemOver { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #003366; cursor: hand; voice-family: '\'}\''; voice-family:inherit; cursor: pointer;}
.navItemOver a { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:visited { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItemOver a:hover { color: #ffffff; background-color:#003366; text-decoration: none; }
.navItem { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; }
.navItem a { color: #ffffff; text-decoration: none; }
.navItem a:hover { color: #ffffff; text-decoration: none; }
.navItem a:visited { color: #ffffff; text-decoration: none; }

div.padded { padding: 4px; }
div.thickPadded { padding: 10px; }
h3.macrolibrariestitle {
    margin: 0px 0px 0px 0px;
}

div.centered { text-align: center; margin: 10px; }
div.centered table {margin: 0px auto; text-align: left; }

.tableview table {
    margin: 0;
}

.tableview th {
    text-align: left;
    color: #003366;
    font-size: 12px;
    padding: 5px 0px 0px 5px;
    border-bottom: 2px solid #3c78b5;
}
.tableview td {
    text-align: left;
    border-color: #ccc;
    border-width: 0px 0px 1px 0px;
    border-style: solid;
    margin: 0;
    padding: 4px 10px 4px 5px;
}

.grid {
    margin: 2px 0px 5px 0px;
    border-collapse: collapse;
}
.grid th  {
    border: 1px solid #ccc;
    padding: 2px 4px 2px 4px;
    background: #f0f0f0;
    text-align: center;
}
.grid td  {
    border: 1px solid #ccc;
    padding: 3px 4px 3px 4px;
}
.gridHover {
	background-color: #f9f9f9;
}

td.infocell {
    background-color: #f0f0f0;
}
.label {
	font-weight: bold;
	color: #003366;
}

label {
	font-weight: bold;
	color: #003366;
}

.error {
	background-color: #fcc;
}

.errorBox {
	background-color: #fcc;
    border: 1px solid #c00;
    padding: 5px;
    margin: 5px;
}

.errorMessage {
	color: #c00;
}

.success {
	background-color: #dfd;
}

.successBox {
	background-color: #dfd;
    border: 1px solid #090;
    padding: 5px;
    margin-top:5px;
    margin-bottom:5px;
}

blockquote {
	padding-left: 10px;
	padding-right: 10px;
	margin-left: 5px;
	margin-right: 0px;
	border-left: 1px solid #3c78b5;
}

table.confluenceTable
{
    margin: 5px;
    border-collapse: collapse;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

/* Added as a temporary fix for CONF-4223. The table elements appear to be inheriting the border: none attribute from the sectionMacro class */
table.confluenceTable th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

td.confluenceTd
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
}

th.confluenceTh
{
    border-width: 1px;
    border-style: solid;
    border-color: #ccc;
    padding: 3px 4px 3px 4px;
    background-color: #f0f0f0;
    text-align: center;
}

DIV.small {
	font-size: 9px;
}

H1.pagename {
	margin-top: 0px;
}

IMG.inline  {}

.loginform {
    margin: 5px;
    border: 1px solid #ccc;
}

/* The text how the "This is a preview" comment should be shown. */
.previewnote { text-align: center;
                font-size: 11px;
                    color: red; }

/* How the preview content should be shown */
.previewcontent { background: #E0E0E0; }

/* How the system messages should be shown (DisplayMessage.jsp) */
.messagecontent { background: #E0E0E0; }

/* How the "This page has been modified..." -comment should be shown. */
.conflictnote { }

.createlink {
    color: maroon;
}
a.createlink {
    color: maroon;
}
.templateparameter {
    font-size: 9px;
    color: darkblue;
}

.diffadded {
    background: #ddffdd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkgreen;
}
.diffdeleted {
    color: #999;
    background: #ffdddd;
    padding: 1px 1px 1px 4px;
	border-left: 4px solid darkred;
}
.diffnochange {
    padding: 1px 1px 1px 4px;
	border-left: 4px solid lightgrey;
}
.differror {
    background: brown;
}
.diff {
    font-family: lucida console, courier new, fixed-width;
	font-size: 12px;
	line-height: 14px;
}
.diffaddedchars {
    background-color:#99ff99;
    font-weight:bolder;
}
.diffremovedchars {
    background-color:#ff9999;
    text-decoration: line-through;
    font-weight:bolder;
}

.greybackground {
    background: #f0f0f0
}

.greybox {
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.borderedGreyBox {
    border: 1px solid #cccccc;
    background-color: #f0f0f0;
    padding: 10px;
}

.greyboxfilled {
 	border: 1px solid #ddd;
    background: #f0f0f0;
    padding: 3px;
	margin: 1px 1px 10px 1px;
}

.navBackgroundBox {
    padding: 5px 5px 5px 5px;
    font-size: 22px;
	font-weight: bold;
	font-family: Arial, sans-serif;
	color: white;
    background: #3c78b5;
    text-decoration: none;
}

.previewBoxTop {
	background-color: #f0f0f0;
    border-width: 1px 1px 0px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 5px 0px 0px 0px;
    text-align: center;
}
.previewContent {
    background-color: #fff;
 	border-color: #3c78b5;
	border-width: 0px 1px 0px 1px;
	border-style: solid;
	padding: 10px;
	margin: 0px;
}
.previewBoxBottom {
	background-color: #f0f0f0;
    border-width: 0px 1px 1px 1px;
    border-style: solid;
    border-color: #3c78b5;
    padding: 5px;
    margin: 0px 0px 5px 0px;
    text-align: center;
}

.functionbox {
    background-color: #f0f0f0;
 	border: 1px solid #3c78b5;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.functionbox-greyborder {
    background-color: #f0f0f0;
 	border: 1px solid #ddd;
	padding: 3px;
	margin: 1px 1px 10px 1px;
}

.search-highlight {
    background-color: #ffffcc;
}

/* normal (white) background */
.rowNormal {
    background-color: #ffffff;
 }

/* alternate (pale yellow) background */
.rowAlternate {
    background-color: #f7f7f7;
}

/* used in the list attachments table */
.rowAlternateNoBottomColor {
    background-color: #f7f7f7;
}

.rowAlternateNoBottomNoColor {
}

.rowAlternateNoBottomColor td {
    border-bottom: 0px;
}

.rowAlternateNoBottomNoColor td {
    border-bottom: 0px;
}

/* row highlight (grey) background */
.rowHighlight {
    background-color: #f0f0f0;

}

TD.greenbar {FONT-SIZE: 2px; BACKGROUND: #00df00; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.redbar {FONT-SIZE: 2px; BACKGROUND: #df0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }
TD.darkredbar {FONT-SIZE: 2px; BACKGROUND: #af0000; BORDER: 1px solid #9c9c9c; PADDING: 0px; }

TR.testpassed {FONT-SIZE: 2px; BACKGROUND: #ddffdd; PADDING: 0px; }
TR.testfailed {FONT-SIZE: 2px; BACKGROUND: #ffdddd; PADDING: 0px; }

.toolbar  {
    margin: 0px;
    border-collapse: collapse;
}

.toolbar td  {
    border: 1px solid #ccc;
    padding: 2px 2px 2px 2px;
    color: #ccc;
}

td.noformatting {
    border-width: 0px;
    border-style: none;
    text-align: center;
	padding: 0px;
}

.commentblock {
    margin: 12px 0 12px 0;
}

/*
 * Divs displaying the license information, if necessary.
 */
.license-eval, .license-none, .license-nonprofit {
    border-top: 1px solid #bbbbbb;
    text-align: center;
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}

.license-eval, .license-none {
    background-color: #ffcccc;
}

.license-eval b, .license-none b {
    color: #990000
}

.license-nonprofit {
    background-color: #ffffff;
}

/*
 * The shadow at the bottom of the page between the main content and the
 * "powered by" section.
 */
.bottomshadow {
    height: 12px;
    background-image: url("$req.contextPath/images/border/border_bottom.gif");
    background-repeat: repeat-x;
}

/*
 * Styling of the operations box
 */
.navmenu .operations li, .navmenu .operations ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.navmenu .operations ul {
    margin-bottom: 9px;
}

.navmenu .label {
    font-weight: inherit;
}

/*
 * Styling of ops as a toolbar
 */
.toolbar div {
    display: none;
}

.toolbar .label {
    display: none;
}

.toolbar .operations {
    display: block;
}

.toolbar .operations ul {
    display: inline;
    list-style: none;
    margin-left: 10px;
    padding-left: 0;
}

.toolbar .operations li {
    list-style: none;
    display: inline;
}

/* list page navigational tabs */
#foldertab {
padding: 3px 0px 3px 8px;
margin-left: 0;
border-bottom: 1px solid #3c78b5;
font: bold 11px Verdana, sans-serif;
}

#foldertab li {
list-style: none;
margin: 0;
display: inline;
}

#foldertab li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
text-decoration: none;
}

#foldertab li a:link { color: #ffffff; }
#foldertab li a:visited { color: #ffffff; }

#foldertab li a:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

#foldertab li a.current {
background: white;
border-bottom: 1px solid white;
color: black;
}

#foldertab li a.current:link { color: black; }
#foldertab li a.current:visited { color: black; }
#foldertab li a.current:hover {
background: white;
border-bottom: 1px solid white;
color: black;
}

/* alphabet list */
ul#squaretab {
margin-left: 0;
padding-left: 0;
white-space: nowrap;
font: bold 8px Verdana, sans-serif;
}

#squaretab li {
display: inline;
list-style-type: none;
}

#squaretab a {
padding: 2px 6px;
border: 1px solid #3c78b5;
}

#squaretab a:link, #squaretab a:visited {
color: #fff;
background-color: #3c78b5;
text-decoration: none;
}

#squaretab a:hover {
color: #ffffff;
background-color: #003366;
border-color: #003366;
text-decoration: none;
}

#squaretab li a#current {
background: white;
color: black;
}

.blogcalendar * {
    font-family:verdana, arial, sans-serif;
    font-size:x-small;
    font-weight:normal;
    line-height:140%;
    padding:2px;
}


table.blogcalendar {
    border: 1px solid #3c78b5;
}

.blogcalendar th.calendarhead, a.calendarhead {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    text-transform:uppercase;
    background-color: #3c78b5;
    color: #ffffff;
    letter-spacing: .3em;
    text-transform: uppercase;
}

.calendarhead:visited {color: white;}
.calendarhead:active {color: white;}
.calendarhead:hover {color: white;}

.blogcalendar th {
    font-size:x-small;
    font-weight:bold;
    padding:2px;
    background-color:#f0f0f0;
}

.blogcalendar td {
    font-size:x-small;
    font-weight:normal;
}

.searchGroup { padding: 0 0 10px 0; background: #f0f0f0; }
.searchGroupHeading { font-size: 10px; font-weight: bold; color: #ffffff; background-color: #3c78b5; padding: 2px 4px 1px 4px; }
.searchItem { padding: 1px 4px 1px 4px; }
.searchItemSelected { padding: 1px 4px 1px 4px; font-weight: bold; background: #ddd; }

/* permissions page styles */
.permissionHeading {
    border-bottom: #bbb; border-width: 0 0 1px 0; border-style: solid; font-size: 16px; text-align: left;
}
.permissionTab {
    border-width: 0 0 0 1px; border-style: solid; background: #3c78b5; color: #ffffff; font-size: 10px;
}
.permissionSuperTab {
    border-width: 0 0 0 1px; border-style: solid; background: #003366; color: #ffffff;
}
.permissionCell {
    border-left: #bbb; border-width: 0 0 0 1px; border-style: solid;
}

/* warning panel */
.warningPanel { background: #FFFFCE; border:#F0C000 1px solid; padding: 8px; margin: 10px; }
/* alert panel */
.alertPanel { background: #FFCCCC; border:#C00 1px solid; padding: 8px; margin: 10px; }
/* info panel */
.infoPanel { background: #D8E4F1; border:#3c78b5 1px solid; padding: 8px; margin: 10px; }

/* side menu highlighting (e.g. space content screen) */
.optionPadded { padding: 2px; }
.optionSelected { background-color: #ffffcc; padding: 2px; border: 1px solid #ddd; margin: -1px; }
.optionSelected a { font-weight: bold; text-decoration: none; color: black; }

/* information macros */
.noteMacro { border-style: solid; border-width: 1px; border-color: #F0C000; background-color: #FFFFCE; text-align:left; margin-top: 5px; margin-bottom: 5px}
.warningMacro { border-style: solid; border-width: 1px; border-color: #c00; background-color: #fcc; text-align:left; margin-top: 5px; margin-bottom: 5px}
.infoMacro { border-style: solid; border-width: 1px; border-color: #3c78b5; background-color: #D8E4F1; text-align:left; margin-top: 5px; margin-bottom: 5px}
.tipMacro { border-style: solid; border-width: 1px; border-color: #090; background-color: #dfd; text-align:left; margin-top: 5px; margin-bottom: 5px}
.informationMacroPadding { padding: 5px 0 0 5px; }

table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
    border: none;
}

table.sectionMacroWithBorder td.columnMacro { border-style: dashed; border-width: 1px; border-color: #cccccc;}

.pagecontent
{
    padding: 10px;
    text-align: left;
}

/* styles for links in the top bar */
.topBarDiv a:link {color: #ffffff;}
.topBarDiv a:visited {color: #ffffff;}
.topBarDiv a:active {color: #ffffff;}
.topBarDiv a:hover {color: #ffffff;}
.topBarDiv {color: #ffffff;}

.topBar {
    background-color: #003366;
}


/* styles for extended operations */
.greyLinks a:link {color: #666666; text-decoration:underline;}
.greyLinks a:visited {color: #666666; text-decoration:underline;}
.greyLinks a:active {color: #666666; text-decoration:underline;}
.greyLinks a:hover {color: #666666; text-decoration:underline;}
.greyLinks {color: #666666; display:block; padding: 10px}

.logoSpaceLink {color: #999999; text-decoration: none}
.logoSpaceLink a:link {color: #999999; text-decoration: none}
.logoSpaceLink a:visited {color: #999999; text-decoration: none}
.logoSpaceLink a:active {color: #999999; text-decoration: none}
.logoSpaceLink a:hover {color: #003366; text-decoration: none}

/* basic panel (basicpanel.vmd) style */
.basicPanelContainer {border: 1px solid #3c78b5; margin-top: 2px; margin-bottom: 8px; width: 100%}
.basicPanelTitle {padding: 5px; margin: 0px; background-color: #f0f0f0; color: black; font-weight: bold;}
.basicPanelBody {padding: 5px; margin: 0px}

.separatorLinks a:link {color: white}
.separatorLinks a:visited {color: white}
.separatorLinks a:active {color: white}

.greynavbar {background-color: #f0f0f0; border-top: 1px solid #3c78b5; margin-top: 2px}

div.headerField {
    float: left;
    width: auto;
    height: 100%;
}

.headerFloat {
    margin-left: auto;
    width: 50%;
}

.headerFloatLeft {
    float: left;
    margin-right: 20px;
    margin-bottom: 10px;
}

#headerRow {
    padding: 10px;
}

div.license-personal {
   background-color: #003366;
   color: #ffffff;
}

div.license-personal a {
   color: #ffffff;
}

.greyFormBox {
    border: 1px solid #cccccc;
    padding: 5px;
}

/* IE automatically adds a margin before and after form tags. Use this style to remove that */
.marginlessForm {
    margin: 0px;
}

.openPageHighlight {
    background-color: #ffffcc;
    padding: 2px;
    border: 1px solid #ddd;
}

.editPageInsertLinks, .editPageInsertLinks a
{
    color: #666666;
    font-weight: bold;
    font-size: 10px;
}

/* Style for label heatmap. */
.top10 a {
    font-weight: bold;
    font-size: 2em;
    color: #003366;
}
.top25 a {
    font-weight: bold;
    font-size: 1.6em;
    color: #003366;
}
.top50 a {
    font-size: 1.4em;
    color: #003366;
}
.top100 a {
    font-size: 1.2em;
    color: #003366;
}

.heatmap {
    list-style:none;
    width: 95%;
    margin: 0px auto;
}

.heatmap a {
    text-decoration:none;
}

.heatmap a:hover {
    text-decoration:underline;
}

.heatmap li {
    display: inline;
}

.minitab {
padding: 3px 0px 3px 8px;
margin-left: 0;
margin-top: 1px;
margin-bottom: 0px;
border-bottom: 1px solid #3c78b5;
font: bold 9px Verdana, sans-serif;
text-decoration: none;
float:none;
}
.selectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
background: white;
border-bottom: 1px solid white;
color: #000000;
text-decoration: none;
}
.unselectedminitab {
padding: 3px 0.5em;
margin-left: 3px;
margin-top: 1px;
border: 1px solid #3c78b5;
border-bottom: none;
background: #3c78b5;
color: #ffffff;
text-decoration: none;
}

a.unselectedminitab:hover {
color: #ffffff;
background: #003366;
border-color: #003366;
}

a.unselectedminitab:link { color: white; }
a.unselectedminitab:visited { color: white; }

a.selectedminitab:link { color: black; }
a.selectedminitab:visited { color: black; }

.linkerror { background-color: #fcc;}

a.labelOperationLink:link {text-decoration: underline}
a.labelOperationLink:active {text-decoration: underline}
a.labelOperationLink:visited {text-decoration: underline}
a.labelOperationLink:hover {text-decoration: underline}

a.newLabel:link {background-color: #ddffdd}
a.newLabel:active {background-color: #ddffdd}
a.newLabel:visited {background-color: #ddffdd}
a.newLabel:hover {background-color: #ddffdd}

ul.square {list-style-type: square}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
}


.inline-control-link a:link {text-decoration: none}
.inline-control-link a:active {text-decoration: none}
.inline-control-link a:visited {text-decoration: none}
.inline-control-link a:hover {text-decoration: none}

.inline-control-link {
    background: #ffc;
    font-size: 9px;
    color: #666;
    padding: 2px;
    text-transform: uppercase;
    text-decoration: none;
    cursor: pointer;
}

div.auto_complete {
    width: 350px;
    background: #fff;
}
div.auto_complete ul {
    border: 1px solid #888;
    margin: 0;
    padding: 0;
    width: 100%;
    list-style-type: none;
}
div.auto_complete ul li {
    margin: 0;
    padding: 3px;
}
div.auto_complete ul li.selected {
    background-color: #ffb;
}
div.auto_complete ul strong.highlight {
    color: #800;
    margin: 0;
    padding: 0;
}

/******* Edit Page Styles *******/
.toogleFormDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    padding:5px;
    margin-top: 5px;
}

.toogleInfoDiv{
    border:1px solid #A7A6AA;
    background-color:white;
    display:none;
    padding:5px;
    margin-top: 10px;
}

.inputSection{
    margin-bottom:20px;
}

#editBox{
   border:1px solid lightgray;
   background-color:#F0F0F0;
}

/******* Left Navigation Theme Styles ********/
.leftnav li a {
    text-decoration:none;
    color:white;
    margin:0px;
    display:block;
    padding:2px;
    padding-left:5px;
    background-color: #3c78b5;
    border-top:1px solid #3c78b5;
}

.leftnav li a:active {color:white;}
.leftnav li a:visited {color:white;}
.leftnav li a:hover {background-color: #003366; color:white;}

/* Added by Shaun during i18n */
.replaced
{
    background-color: #33CC66;
}

.topPadding
{
    margin-top: 20px;
}

/* new form style */
.form-block {
    padding: 6px;
}
.form-error-block {
    padding: 6px;
    background: #fcc;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-element-large {
    font-size: 16px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-element-small {
    font-size: 12px;
    font-weight: bold;
    font-family: Arial, sans-serif;
    color: #003366;
}

.form-header {
    background: lightyellow;
    border-top: #f0f0f0 1px solid;
    border-bottom: #f0f0f0 1px solid;
    margin-bottom: 6px;
    padding: 0 12px 0 12px;
}
.form-header p, .form-block p, .form-error-block p {
    line-height: normal;
    margin: 12px 0 12px 0;
}
.form-example {
    color: #888;
    font-size: 11px;
}
.form-divider {
    border-bottom: #ccc 1px solid;
    margin-bottom: 6px;
}
.form-buttons {
    margin-top: 6px;
    border-top: #ccc 1px solid;
    border-bottom: #ccc 1px solid;
    background: #f0f0f0;
    padding: 10px;
    text-align: center;
}
.form-buttons input {
    width: 100px;
}
.form-block .error {
    padding: 6px;
    margin-bottom: 6px;
}
    -->
    </style>
</head>
<body>

<div id="PageContent">
<table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%"><tr>
<td valign="top" class="pagebody">

    <div class="pageheader">
        <span class="pagetitle">
            Page Edited :
            <a href="http://cwiki.apache.org/confluence/display/CAMEL">CAMEL</a> :
            <a href="http://cwiki.apache.org/confluence/display/CAMEL/JMS">JMS</a>
        </span>
    </div>

     <p>
        <a href="http://cwiki.apache.org/confluence/display/CAMEL/JMS">JMS</a>
        has been edited by             <a href="http://cwiki.apache.org/confluence/display/~jstrachan">James Strachan</a>
            <span class="smallfont">(Dec 09, 2008)</span>.
     </p>
    
     <p>
                 <a href="http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=51893&originalVersion=59&revisedVersion=60">(View changes)</a>
     </p>

    <span class="label">Content:</span><br/>
    <div class="greybox wiki-content"><h2><a name="JMS-JMSComponent"></a>JMS Component</h2>

<p>The JMS component allows messages to be sent to a <span class="nobr"><a href="http://java.sun.com/products/jms/" title="Visit page outside Confluence" rel="nofollow">JMS<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> Queue or Topic; or messages to be consumed from a JMS Queue or Topic. The implementation of the JMS Component uses Spring's JMS support for declarative transactions, using Spring's JmsTemplate for sending and a MessageListenerContainer for consuming.</p>


<h3><a name="JMS-URIformat"></a>URI format</h3>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:[topic:]destinationName?properties</pre>
</div></div>

<p>So for example to send to queue FOO.BAR you would use</p>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:FOO.BAR</pre>
</div></div>

<p>You can be completely specific if you wish via</p>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:queue:FOO.BAR</pre>
</div></div>


<p>If you want to send to a topic called Stocks.Prices then you would use</p>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:topic:Stocks.Prices</pre>
</div></div>

<h4><a name="JMS-UsingTemporaryDestinations"></a>Using Temporary Destinations</h4>

<p>As of 1.4.0 of Camel you can use temporary queues using the following URL format</p>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:temp:queue:foo</pre>
</div></div>

<p>or temporary topics as</p>

<div class="code"><div class="codeContent">
<pre class="code-java">jms:temp:topic:bar</pre>
</div></div>

<p>Where <b>foo</b> and <b>bar</b>, the text after the String <b>jms:temp:queue:</b> or <b>jms:temp:topic:</b>, are the names of the destinations. This enables multiple routes or processors or beans to refer to the same temporary destination. e.g. you can create 3 temporary destinations and use them in routes as inputs or outputs by referring to them by name.</p>

<h3><a name="JMS-Notes"></a>Notes</h3>


<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">If you are using ActiveMQ</b><br />
<p>Note that the JMS component reuses Spring 2's JmsTemplate for sending messages. This is not ideal for use in a non-J2EE container and typically requires some caching JMS provider to avoid performance <span class="nobr"><a href="http://activemq.apache.org/jmstemplate-gotchas.html" title="Visit page outside Confluence" rel="nofollow">being lousy<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<p>So if you intent to use <span class="nobr"><a href="http://activemq.apache.org/" title="Visit page outside Confluence" rel="nofollow">Apache ActiveMQ<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> as your Message Broker - which is a good choice as ActiveMQ rocks <img class="emoticon" src="/confluence/images/icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/>, then we recommend that you either</p>

<ul>
	<li>use the <a href="/confluence/display/CAMEL/ActiveMQ" title="ActiveMQ">ActiveMQ</a> component which is already configured to use ActiveMQ efficiently</li>
	<li>use the PoolingConnectionFactory in ActiveMQ</li>
</ul>
</td></tr></table>

<p>If you wish to use durable topic subscriptions, you need to specify both <b>clientId</b> and <b>durableSubscriberName</b>. Note that the value of the clientId must be unique and can only be used by a single JMS connection instance in your entire network. You may prefer to use <span class="nobr"><a href="http://activemq.apache.org/virtual-destinations.html" title="Visit page outside Confluence" rel="nofollow">Virtual Topics<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> instead to avoid this limitation. More background on durable messaging <span class="nobr"><a href="http://activemq.apache.org/how-do-durable-queues-and-topics-work.html" title="Visit page outside Confluence" rel="nofollow">here<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<p>When using message headers; the JMS specification states that header names must be valid Java identifiers. So by default camel will ignore any headers which do not match this rule. So try name your headers as if they are valid Java identifiers. One added bonus of this is that you can then use your headers inside a JMS Selector - which uses SQL92 syntax which mandates Java identifier syntax for headers.</p>

<p>From Camel 1.4 a simple strategy for mapping headers names is used by default. The strategy is to replace any dots in the headername with underscore, and vice-versa when the header name is restored from the JMS message that was sent over the wire. What does this means? No more loosing method names to invoke on a bean component, no more loosing the filename header for the File Component etc. </p>

<p>Current header name strategy used for accepting header names in Camel:</p>
<ul class="alternate" type="square">
	<li>replace all dots with underscores (e.g. <tt>org.apache.camel.MethodName</tt> =&gt; <tt>org_apache_camel_MethodName</tt>)</li>
	<li>test if the name is a valid java identifier using the JDK core classes</li>
	<li>if test success then the header is added and sent over the wire, if not its dropped (logged at DEBUG level)</li>
</ul>



<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">For Consuming Messages cacheLevelName settings are vital!</b><br />
<p>If you are using Spring before 2.5.1 and Camel before 1.3.0 then you might want to set the <b>cacheLevelName</b> to be CACHE_CONSUMER for maximum performance. </p>

<p>Due to a <span class="nobr"><a href="http://opensource.atlassian.com/projects/spring/browse/SPR-3890" title="Visit page outside Confluence" rel="nofollow">bug in earlier Spring versions<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> causing a lack of transactional integrity, previous versions of Camel and Camel versions from 1.3.0 onwwards when used with earlier Spring versions than 2.5.1 will default to use CACHE_CONNECTION. See the JIRAs <span class="nobr"><a href="https://issues.apache.org/activemq/browse/CAMEL-163" title="Visit page outside Confluence" rel="nofollow">CAMEL-163<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> and <span class="nobr"><a href="https://issues.apache.org/activemq/browse/CAMEL-294" title="Visit page outside Confluence" rel="nofollow">CAMEL-294<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<p>Also if you are using XA or running in a J2EE container then you may want to set the <b>cacheLevelName</b> to be CACHE_NONE as we have seen using JBoss with TibCo EMS and JTA/XA you must disable caching.</p></td></tr></table>


<h3><a name="JMS-Properties"></a>Properties</h3>

<p>You can configure lots of different properties on the JMS endpoint which map to properties on the <span class="nobr"><a href="http://activemq.apache.org/camel/maven/camel-jms/apidocs/org/apache/camel/component/jms/JmsConfiguration.html" title="Visit page outside Confluence" rel="nofollow">JMSConfiguration POJO<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>. <b>Notice:</b> Many of these properties maps to properties on Spring JMS that Camel uses for sending and receiving messages. So you can get more information about these properties by consulting the Spring documentation.</p>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Property </th>
<th class='confluenceTh'> Default Value </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> acceptMessagesWhileStopping </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Should the consumer accept messages while it is stopping </td>
</tr>
<tr>
<td class='confluenceTd'> acknowledgementModeName </td>
<td class='confluenceTd'> "AUTO_ACKNOWLEDGE" </td>
<td class='confluenceTd'> The JMS acknowledgement name which is one of: TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE </td>
</tr>
<tr>
<td class='confluenceTd'> acknowledgementMode </td>
<td class='confluenceTd'> -1 </td>
<td class='confluenceTd'> The JMS acknowledgement mode defined as an Integer. Allows to set vendor-specific extensions to the acknowledgment mode. For the regular modes prefer to use the acknowledgementModeName instead. </td>
</tr>
<tr>
<td class='confluenceTd'> alwaysCopyMessage </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> If true then Camel will always make a JMS message copy of the message when it's passed to the producer for sending. Copying the message is needed in some situations such as when a replyToDestinationSelectorName is set (Camel will by the way set the alwaysCopyMessage to true if a replyToDestinationSelectorName is set) </td>
</tr>
<tr>
<td class='confluenceTd'> autoStartup </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> Should the consumer container auto-startup </td>
</tr>
<tr>
<td class='confluenceTd'> cacheLevelName </td>
<td class='confluenceTd'> "CACHE_CONSUMER" </td>
<td class='confluenceTd'> Sets the cache level by name for the underlying JMS resources. Possible values are: <tt>CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE and CACHE_SESSION</tt>. See the <span class="nobr"><a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/jms/listener/DefaultMessageListenerContainer.html" title="Visit page outside Confluence" rel="nofollow">Spring documentation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.  </td>
</tr>
<tr>
<td class='confluenceTd'> cacheLevel </td>
<td class='confluenceTd'> -1 </td>
<td class='confluenceTd'> Sets the cache level by id for the underlying JMS resources </td>
</tr>
<tr>
<td class='confluenceTd'> clientId </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Sets the JMS client ID to use. Note that this value if specified must be unique and can only be used by a single JMS connection instance. Its typically only required for durable topic subscriptions. You may prefer to use <span class="nobr"><a href="http://activemq.apache.org/virtual-destinations.html" title="Visit page outside Confluence" rel="nofollow">Virtual Topics<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> instead </td>
</tr>
<tr>
<td class='confluenceTd'> consumerType </td>
<td class='confluenceTd'> Default </td>
<td class='confluenceTd'> The consumer type to use, either: <tt>Simple</tt>, <tt>Default</tt> or <tt>ServerSessionPool</tt>. The consumer type determines which Spring JMS listener should be used. <tt>Default</tt> will use <tt>org.springframework.jms.listener.DefaultMessageListenerContainer</tt>. <tt>Simple</tt> will use <tt>org.springframework.jms.listener.SimpleMessageListenerContainer</tt> and <tt>ServerSessionPool</tt> will use <tt>org.springframework.jms.listener.serversession.ServerSessionMessageListenerContainer</tt>. If option <tt>useVersion102=true</tt> then Camel will of course use the JMS 1.0.2 Spring classes instead. <tt>ServerSessionPool</tt> is <b>@deprecated</b> and will be removed in Camel 2.0. </td>
</tr>
<tr>
<td class='confluenceTd'> concurrentConsumers </td>
<td class='confluenceTd'> 1 </td>
<td class='confluenceTd'> Specifies the default number of concurrent consumers </td>
</tr>
<tr>
<td class='confluenceTd'> connectionFactory </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The default JMS connection factory to use for the <em>listenerConnectionFactory</em> and <em>templateConnectionFactory</em> if neither are specified </td>
</tr>
<tr>
<td class='confluenceTd'> deliveryPersistent </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> Is persistent delivery used by default? </td>
</tr>
<tr>
<td class='confluenceTd'> destination </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> (2.0 onwards) specifies the JMS Destination object to use on this endpoint </td>
</tr>
<tr>
<td class='confluenceTd'> destinationName </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> (2.0 onwards) specifies the JMS destination name to use on this endpoint </td>
</tr>
<tr>
<td class='confluenceTd'> disableReplyTo </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Do you want to ignore the JMSReplyTo header and so treat messages as InOnly by default and not send a reply back? </td>
</tr>
<tr>
<td class='confluenceTd'> durableSubscriptionName </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The durable subscriber name for specifying durable topic subscriptions </td>
</tr>
<tr>
<td class='confluenceTd'> eagerLoadingOfProperties </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Enables eager loading of JMS properties as soon as a message is received which generally is inefficient as the JMS properties may not be required but sometimes can catch early any issues with the underlying JMS provider and the use of JMS properties. Can be used for testing purpose to ensure JMS properties can be understood and handled correctly. </td>
</tr>
<tr>
<td class='confluenceTd'> exceptionListener </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The JMS Exception Listener used to be notified of any underlying JMS exceptions </td>
</tr>
<tr>
<td class='confluenceTd'> explicitQosEnabled </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Set if the deliveryMode, priority or timeToLive should be used when sending messages </td>
</tr>
<tr>
<td class='confluenceTd'> exposeListenerSession </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> Set if the listener session should be exposed when consuming messages </td>
</tr>
<tr>
<td class='confluenceTd'> idleTaskExecutionLimit </td>
<td class='confluenceTd'> 1 </td>
<td class='confluenceTd'> Specify the limit for idle executions of a receive task, not having received any message within its execution. If this limit is reached, the task will shut down and leave receiving to other executing tasks (in case of dynamic scheduling; see the "maxConcurrentConsumers" setting). </td>
</tr>
<tr>
<td class='confluenceTd'> jmsOperations </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Allow to use your own implementation of the <tt>org.springframework.jms.core.JmsOperations</tt> interface. Camel uses JmsTemplate as default. Can be used for testing purpose, but not used much as stated in the spring API docs. </td>
</tr>
<tr>
<td class='confluenceTd'> listenerConnectionFactory </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The JMS connection factory used for consuming messages </td>
</tr>
<tr>
<td class='confluenceTd'> maxConcurrentConsumers </td>
<td class='confluenceTd'> 1 </td>
<td class='confluenceTd'> Specifies the maximum number of concurrent consumers </td>
</tr>
<tr>
<td class='confluenceTd'> maxMessagesPerTask </td>
<td class='confluenceTd'> 1 </td>
<td class='confluenceTd'> The number of messages per task </td>
</tr>
<tr>
<td class='confluenceTd'> messageConverter </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The Spring Message Converter </td>
</tr>
<tr>
<td class='confluenceTd'> messageIdEnabled </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> When sending, should message IDs be added </td>
</tr>
<tr>
<td class='confluenceTd'> messageTimestampEnabled </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> Should timestamps be enabled by default on sending messages </td>
</tr>
<tr>
<td class='confluenceTd'> password </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The password which is set for the connector factory</td>
</tr>
<tr>
<td class='confluenceTd'> priority </td>
<td class='confluenceTd'> -1 </td>
<td class='confluenceTd'> Values of &gt; 1 specify the message priority when sending, if the explicitQosEnabled property is specified (with 0 as the lowest priority and 9 as the highest) </td>
</tr>
<tr>
<td class='confluenceTd'> preserveMessageQos </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'>  Set to true if you want to send message using the QoS settings specified on the message, instead of the QoS settings on the JMS endpoint </td>
</tr>
<tr>
<td class='confluenceTd'> pubSubNoLocal </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Set whether to inhibit the delivery of messages published by its own connection </td>
</tr>
<tr>
<td class='confluenceTd'> selector </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Sets the JMS Selector which is an SQL 92 predicate used to apply to messages to filter them at the message broker. You may have to encode special characters such as = as %3D </td>
</tr>
<tr>
<td class='confluenceTd'> receiveTimeout </td>
<td class='confluenceTd'> none </td>
<td class='confluenceTd'> The timeout when receiving messages </td>
</tr>
<tr>
<td class='confluenceTd'> recoveryInterval </td>
<td class='confluenceTd'> none </td>
<td class='confluenceTd'> The recovery interval </td>
</tr>
<tr>
<td class='confluenceTd'> replyToTempDestinationAffinity </td>
<td class='confluenceTd'> endpoint </td>
<td class='confluenceTd'> defines the component created temporary replyTo destination sharing strategy. Possible values are: <tt>component</tt>, <tt>endpoint</tt> or <tt>producer</tt>. <b>component</b> = a single temp queue is shared among all producers for a given component instance. <b>endpoint</b> = a single temp queue is shared among all producers for a given endpoint instance. <b>producer</b> = a single temp queue is created per producer. </td>
</tr>
<tr>
<td class='confluenceTd'> replyToDestination </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Provides an explicit reply to destination which overrides any incoming value of <tt>Message.getJMSReplyTo()</tt> </td>
</tr>
<tr>
<td class='confluenceTd'> replyToDestinationSelectorName </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Sets the JMS Selector using the fixed name to be used so you can filter out your own replies from the others, when using a shared queue (i.e. if you are not using a temporary reply queue). </td>
</tr>
<tr>
<td class='confluenceTd'> replyToDeliveryPersistent </td>
<td class='confluenceTd'> true </td>
<td class='confluenceTd'> Is persistent delivery used by default for reply? </td>
</tr>
<tr>
<td class='confluenceTd'> requestTimeout </td>
<td class='confluenceTd'> 20000 </td>
<td class='confluenceTd'> The timeout when sending messages </td>
</tr>
<tr>
<td class='confluenceTd'> serverSessionFactory </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> <b>@deprecated</b> - will be removed in Camel 2.0. The JMS ServerSessionFactory if you wish to use ServerSessionFactory for consumption </td>
</tr>
<tr>
<td class='confluenceTd'> subscriptionDurable </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Enabled by default if you specify a durableSubscriberName and a clientId </td>
</tr>
<tr>
<td class='confluenceTd'> taskExecutor </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Allows you to specify a custom task executor for consuming messages </td>
</tr>
<tr>
<td class='confluenceTd'> templateConnectionFactory </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The JMS connection factory used for sending messages </td>
</tr>
<tr>
<td class='confluenceTd'> timeToLive </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> Is a time to live specified when sending messages </td>
</tr>
<tr>
<td class='confluenceTd'> transacted </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Is transacted mode used for sending/receiving messages using the InOnly <a href="/confluence/display/CAMEL/Exchange+Pattern" title="Exchange Pattern">Exchange Pattern</a> </td>
</tr>
<tr>
<td class='confluenceTd'> transactedInOut </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> If transacted mode will be use when using the InOut <a href="/confluence/display/CAMEL/Exchange+Pattern" title="Exchange Pattern">Exchange Pattern</a> </td>
</tr>
<tr>
<td class='confluenceTd'> transactionManager </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The Spring transaction manager to use </td>
</tr>
<tr>
<td class='confluenceTd'> transactionName </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The name of the transaction to use </td>
</tr>
<tr>
<td class='confluenceTd'> transactionTimeout </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The timeout value of the transaction if using transacted mode </td>
</tr>
<tr>
<td class='confluenceTd'> username </td>
<td class='confluenceTd'> null </td>
<td class='confluenceTd'> The username which is set for the connector factory</td>
</tr>
<tr>
<td class='confluenceTd'> useMessageIDAsCorrelationID </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Should <tt>JMSMessageID</tt> be used as <tt>JMSCorrelationID</tt> for <b>InOut</b> messages. Camel will by default use a GUID  </td>
</tr>
<tr>
<td class='confluenceTd'> useVersion102 </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> Should the old JMS API be used </td>
</tr>
</tbody></table>


<h3><a name="JMS-MessageMappingbetweenJMSandCamel"></a>Message Mapping between JMS and Camel</h3>
<p>Camel will automatically map messages between <tt>javax.jms.Message</tt> and <tt>org.apache.camel.Message</tt>. </p>

<p>When sending a JMS message Camel will convert the body to the following JMS message:</p>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Body Type </th>
<th class='confluenceTh'> JMS Message </th>
<th class='confluenceTh'> Comment </th>
</tr>
<tr>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> <tt>javax.jms.TextMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> org.w3c.dom.Node </td>
<td class='confluenceTd'> <tt>javax.jms.TextMessage</tt> </td>
<td class='confluenceTd'> The DOM will be converted to String </td>
</tr>
<tr>
<td class='confluenceTd'> Map </td>
<td class='confluenceTd'> <tt>javax.jms.MapMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> java.io.Serializable </td>
<td class='confluenceTd'> <tt>javax.jms.ObjectMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> byte[] </td>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> java.io.File </td>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> java.io.Reader </td>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> java.io.InputStream </td>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> java.nio.ByteBuffer </td>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
</tbody></table>

<p>When receiving a JMS message Camel will convert the JMS message to the following body type:</p>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> JMS Message </th>
<th class='confluenceTh'> Body Type </th>
<th class='confluenceTh'> Comment </th>
</tr>
<tr>
<td class='confluenceTd'> <tt>javax.jms.TextMessage</tt> </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <tt>javax.jms.BytesMessage</tt> </td>
<td class='confluenceTd'> byte[] </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <tt>javax.jms.MapMessage</tt> </td>
<td class='confluenceTd'> Map&lt;String, Object&gt; </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> <tt>javax.jms.ObjectMessage</tt> </td>
<td class='confluenceTd'> Object </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
</tbody></table>


<h3><a name="JMS-Messageformatwhensending"></a>Message format when sending</h3>
<p>The exchange that is sent over the JMS wire must conform to the <span class="nobr"><a href="http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Message.html" title="Visit page outside Confluence" rel="nofollow">JMS Message spec<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span>.</p>

<p>For the <tt>exchange.in.header</tt> the following rules apply for the <b>keys</b>:</p>
<ul class="alternate" type="square">
	<li>Keys stating with JMS or JMSX is reserved. All user keys will be dropped.</li>
	<li><tt>exchange.in.headers</tt> keys must be literals and all be valid Java identifiers. (do not use dots in the key name)</li>
	<li>In Camel 1.4 onwards Camel will automatically replace all dots with underscore for key names. And vice-versa when Camel consumes JMS messages.</li>
</ul>


<p>For the <tt>exchange.in.header</tt> the following rules apply for the <b>values</b>:</p>
<ul class="alternate" type="square">
	<li>The values must be primitives or their counter objects (such as Integer, Long, Character). String, CharSequence, Date, BigDecimal or BigInteger is all converted to their <tt>toString()</tt> representation. All other types is dropped.</li>
</ul>


<p>Camel will log with category <tt>org.apache.camel.component.jms.JmsBinding</tt> at <b>DEBUG</b> level if it drops a given header value. Example:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">2008-07-09 06:43:04,046 [main           ] DEBUG JmsBinding  
  - Ignoring non primitive header: order of class: org.apache.camel.component.jms.issues.DummyOrder with value: DummyOrder{orderId=333, itemId=4444, quantity=2}</pre>
</div></div>


<h3><a name="JMS-Messageformatwhenreceiving"></a>Message format when receiving</h3>

<p>Camel will add the following properties to the Exchange when it receives a message:</p>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Property </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> <tt>org.apache.camel.jms.replyDestination</tt> </td>
<td class='confluenceTd'> <tt>javax.jms.Destination</tt> </td>
<td class='confluenceTd'> The reply destination </td>
</tr>
</tbody></table>

<p>Camel will add the following JMS properties to the <b>IN</b> Message headers when it receives a JMS message:</p>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Header </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> JMSCorrelationID </td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> The JMS correlation id </td>
</tr>
<tr>
<td class='confluenceTd'> JMSDeliveryMode</td>
<td class='confluenceTd'> int </td>
<td class='confluenceTd'> The JMS delivery mode </td>
</tr>
<tr>
<td class='confluenceTd'> JMSDestination</td>
<td class='confluenceTd'> <tt>javax.jms.Destination</tt> </td>
<td class='confluenceTd'> The JMS destination </td>
</tr>
<tr>
<td class='confluenceTd'> JMSExpiration</td>
<td class='confluenceTd'> long </td>
<td class='confluenceTd'> The JMS expiration </td>
</tr>
<tr>
<td class='confluenceTd'> JMSMessageID</td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> The JMS unique message id </td>
</tr>
<tr>
<td class='confluenceTd'> JMSPriority</td>
<td class='confluenceTd'> int </td>
<td class='confluenceTd'> The JMS priority (with 0 as the lowest priority and 9 as the highest) </td>
</tr>
<tr>
<td class='confluenceTd'> JMSRedelivered</td>
<td class='confluenceTd'> boolean </td>
<td class='confluenceTd'> Is the JMS message redelivered </td>
</tr>
<tr>
<td class='confluenceTd'> JMSReplyTo</td>
<td class='confluenceTd'> <tt>javax.jms.Destination</tt> </td>
<td class='confluenceTd'> The JMS reply to destination </td>
</tr>
<tr>
<td class='confluenceTd'> JMSTimestamp</td>
<td class='confluenceTd'> long </td>
<td class='confluenceTd'> The JMS timestamp </td>
</tr>
<tr>
<td class='confluenceTd'> JMSType</td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> The JMS type </td>
</tr>
<tr>
<td class='confluenceTd'> JMSXGroupID</td>
<td class='confluenceTd'> String </td>
<td class='confluenceTd'> The JMS group id </td>
</tr>
</tbody></table>
<p>As all the above information is standard JMS you can check the <span class="nobr"><a href="http://java.sun.com/javaee/5/docs/api/javax/jms/Message.html" title="Visit page outside Confluence" rel="nofollow">JMS documentation<sup><img class="rendericon" src="/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span> for further details.</p>


<h3><a name="JMS-ConfiguringdifferentJMSproviders"></a>Configuring different JMS providers</h3>

<p>You can configure your JMS provider inside the <a href="/confluence/display/CAMEL/Spring" title="Spring">Spring</a> XML as follows... </p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;camelContext id=<span class="code-quote">"camel"</span> xmlns=<span class="code-quote">"http://activemq.apache.org/camel/schema/spring"</span>&gt;</span>
<span class="code-tag">&lt;/camelContext&gt;</span>

<span class="code-tag">&lt;bean id=<span class="code-quote">"activemq"</span> class=<span class="code-quote">"org.apache.camel.component.jms.JmsComponent"</span>&gt;</span>
  <span class="code-tag">&lt;property name=<span class="code-quote">"connectionFactory"</span>&gt;</span>
    <span class="code-tag">&lt;bean class=<span class="code-quote">"org.apache.activemq.ActiveMQConnectionFactory"</span>&gt;</span>
      <span class="code-tag">&lt;property name=<span class="code-quote">"brokerURL"</span> value=<span class="code-quote">"vm://localhost?broker.persistent=false"</span>/&gt;</span>
    <span class="code-tag">&lt;/bean&gt;</span>
  <span class="code-tag">&lt;/property&gt;</span>
<span class="code-tag">&lt;/bean&gt;</span></pre>
</div></div>

<p>Basically you can configure as many JMS component instances as you wish and give them <b>a unique name via the id attribute</b>. The above example configures an <em>'activemq'</em> component. You could do the same to configure MQSeries, TibCo, BEA, Sonic etc.</p>

<p>Once you have a named JMS component you can then refer to endpoints within that component using URIs. For example for the component name'activemq' you can then refer to destinations as <b>activemq:[queue:&#124;topic:]destinationName</b>. So you could use the same approach for working with all other JMS providers.</p>

<p>This works by the SpringCamelContext lazily fetching components from the spring context for the scheme name you use for <a href="/confluence/display/CAMEL/Endpoint" title="Endpoint">Endpoint</a> <a href="/confluence/display/CAMEL/URIs" title="URIs">URIs</a> and having the <a href="/confluence/display/CAMEL/Component" title="Component">Component</a> resolve the endpoint URIs. </p>


<h4><a name="JMS-UsingJNDItofindtheConnectionFactory"></a>Using JNDI to find the ConnectionFactory</h4>

<p>If you are using a J2EE container you might want to lookup in JNDI to find your ConnectionFactory rather than use the usual &lt;bean&gt; mechanism in spring. You can do this using Spring's factory bean or the new Spring XML namespace. e.g.</p>

<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;bean id=<span class="code-quote">"weblogic"</span> class=<span class="code-quote">"org.apache.camel.component.jms.JmsComponent"</span>&gt;</span>
  <span class="code-tag">&lt;property name=<span class="code-quote">"connectionFactory"</span> ref=<span class="code-quote">"myConnectionFactory"</span>/&gt;</span>
<span class="code-tag">&lt;/bean&gt;</span>

<span class="code-tag">&lt;jee:jndi-lookup id=<span class="code-quote">"myConnectionFactory"</span> jndi-name=<span class="code-quote">"jms/connectionFactory"</span>/&gt;</span></pre>
</div></div>


<h3><a name="JMS-ConcurrentConsuming"></a>Concurrent Consuming</h3>

<p>A common requirement with JMS is to consume messages concurrently in many threads to achieve high throughput. As shown above you use the <b>concurrentConsumers</b> property above.</p>

<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"jms:SomeQueue?concurrentConsumers=20"</span>).
  bean(MyClass.class);</pre>
</div></div>

<p>You can configure the properties on the JmsComponent if you wish or on specific endpoints via the URI or by configuring the JmsEndpoint directly.</p>


<h3><a name="JMS-EnablingTransactedConsumption"></a>Enabling Transacted Consumption</h3>

<p>A common requirement is to consume from a queue in a transaction then process the message using the Camel route. To do this just ensure you set the following properties on the component/endpoint</p>

<ul>
	<li>transacted = true</li>
	<li>transactionManager = a Transsaction Manager - typically the JmsTransactionManager</li>
</ul>


<p>See also the <a href="/confluence/display/CAMEL/Transactional+Client" title="Transactional Client">Transactional Client</a> EIP pattern for further details.</p>

<p>Note that when using <a href="/confluence/display/CAMEL/Request+Reply" title="Request Reply">Request Reply</a> over JMS you cannot use a single transaction; as JMS will not send any messages until a commit is performed so the server side won't receive anything at all until the transaction commits. So with request/response you must commit a transaction after sending the first request and then use a separate transaction for receiving the response.</p>

<p>Its for this reason that the <b>transacted</b> property only applies to InOnly message <a href="/confluence/display/CAMEL/Exchange+Pattern" title="Exchange Pattern">Exchange Pattern</a>. If you want to use transacted InOut then you must use <b>transactedInOut</b>.</p>

<h3><a name="JMS-Usingrequesttimeout"></a>Using request timeout</h3>
<p>In the sample below we send a request-reply style message (we use the <tt>requestBody</tt> method = <tt>InOut</tt>) to the slow queue for further processing in Camel and we wait for a return reply. </p>

<div class="code"><div class="codeContent">
<pre class="code-java"><span class="code-comment">// send a in-out with a timeout <span class="code-keyword">for</span> 5 sec
</span><span class="code-object">Object</span> out = template.requestBody(<span class="code-quote">"activemq:queue:slow?requestTimeout=5000"</span>, <span class="code-quote">"Hello World"</span>);</pre>
</div></div>

<h3><a name="JMS-Samples"></a>Samples</h3>
<p>JMS is used in many examples for other components as well. But we provide a few samples below to get started.</p>

<h4><a name="JMS-ReceivingfromJMS"></a>Receiving from JMS</h4>
<p>In this sample we configure a route that receives JMS messages and routes the message to a POJO</p>

<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"jms:queue:foo"</span>).
     to(<span class="code-quote">"bean:myBusinessLogic"</span>);</pre>
</div></div>

<p>You can of course use any of the EIP pattern so the route can be context based, such as filtering an order topic for the big spenders:</p>
<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"jms:topic:OrdersTopic"</span>).
  filter().method(<span class="code-quote">"myBean"</span>, <span class="code-quote">"isGoldCustomer"</span>).
    to(<span class="code-quote">"jms:queue:BigSpendersQueue"</span>);</pre>
</div></div>

<h4><a name="JMS-SendingtoaJMS"></a>Sending to a JMS </h4>
<p>In the sample below we poll a file folder and send the file content to a JMS topic. As we want the content of the file as a TextMessage instead of a BytesMessage we need to convert the body to a String.</p>
<div class="code"><div class="codeContent">
<pre class="code-java">from(<span class="code-quote">"file:<span class="code-comment">//orders"</span>).
</span>  convertBodyTo(<span class="code-object">String</span>.class).
  to(<span class="code-quote">"jms:topic:OrdersTopic"</span>);</pre>
</div></div>

<h4><a name="JMS-UsingAnnotationsBeanIntegration"></a>Using <a href="/confluence/display/CAMEL/Bean+Integration" title="Bean Integration">Annotations</a></h4>
<p>Camel also has annotations so you can use <a href="/confluence/display/CAMEL/POJO+Consuming" title="POJO Consuming">POJO Consuming</a> and <a href="/confluence/display/CAMEL/POJO+Producing" title="POJO Producing">POJO Producing</a>. </p>

<h4><a name="JMS-SpringDSLsample"></a>Spring DSL sample</h4>
<p>The sample above are using the Java DSL. Camel also supports using Spring XML DSL. Here is the big spender sample using Spring DSL:</p>
<div class="code"><div class="codeContent">
<pre class="code-xml"><span class="code-tag">&lt;route&gt;</span>
  <span class="code-tag">&lt;from uri=<span class="code-quote">"jms:topic:OrdersTopic"</span>/&gt;</span>
  <span class="code-tag">&lt;filter&gt;</span>
    <span class="code-tag">&lt;method bean=<span class="code-quote">"myBean"</span> method=<span class="code-quote">"isGoldCustomer"</span>/&gt;</span>
    <span class="code-tag">&lt;to uri=<span class="code-quote">"jms:queue:BigSpendersQueue"</span>/&gt;</span>
  <span class="code-tag">&lt;/filter&gt;</span>
<span class="code-tag">&lt;/route&gt;</span></pre>
</div></div>

<h4><a name="JMS-Othersamples"></a>Other samples</h4>
<p>JMS is used a lot in other samples for other components and EIP patterns as well in this Camel documentation. So feel free to browse the documentation. If you have good time then check out the this tutorial that uses JMS but focuses on how well Spring Remoting and Camel works together <a href="/confluence/display/CAMEL/Tutorial-JmsRemoting" title="Tutorial-JmsRemoting">Tutorial&#45;JmsRemoting</a>.</p>

<h3><a name="JMS-SeeAlso"></a>See Also</h3>
<ul>
	<li><a href="/confluence/display/CAMEL/Configuring+Camel" title="Configuring Camel">Configuring Camel</a></li>
	<li><a href="/confluence/display/CAMEL/Component" title="Component">Component</a></li>
	<li><a href="/confluence/display/CAMEL/Endpoint" title="Endpoint">Endpoint</a></li>
	<li><a href="/confluence/display/CAMEL/Getting+Started" title="Getting Started">Getting Started</a></li>
</ul>

<ul class="alternate" type="square">
	<li><a href="/confluence/display/CAMEL/Transactional+Client" title="Transactional Client">Transactional Client</a></li>
	<li><a href="/confluence/display/CAMEL/Bean+Integration" title="Bean Integration">Bean Integration</a></li>
	<li><a href="/confluence/display/CAMEL/Tutorial-JmsRemoting" title="Tutorial-JmsRemoting">Tutorial&#45;JmsRemoting</a></li>
</ul>
</div>


</td></tr></table></div>
<p>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="http://cwiki.apache.org/confluence/images/border/spacer.gif" width="1" height="1" border="0"/></td>
    </tr>
</table>

<div class="smalltext">
    Powered by
    <a href="http://www.atlassian.com/software/confluence/default.jsp?clicked=footer" class="smalltext">Atlassian Confluence</a>
    (Version: 2.2.9 Build:#527 Sep 07, 2006)
    -
    <a href="http://jira.atlassian.com/secure/BrowseProject.jspa?id=10470" class="smalltext">Bug/feature request</a><br/>
    <br>
    <a href="http://cwiki.apache.org/confluence/users/viewnotifications.action">Unsubscribe or edit your notifications preferences</a>

</div>

</body>
</html>


Mime
View raw message