| <?xml version="1.0" encoding="utf-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="serif,Symbol,ZapfDingbats" font-size="10pt" text-align="justify" line-height="normal" font-selection-strategy="character-by-character" line-height-shift-adjustment="disregard-shifts" writing-mode="lr-tb" language="en"><fo:layout-master-set><fo:simple-page-master master-name="blank" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body display-align="center" margin-bottom="0.5in" margin-top="0.5in" margin-left="0in" margin-right="0in" region-name="blank-body"/><fo:region-before region-name="xsl-region-before-blank" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-blank" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-blank" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-blank" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="lot-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="lot-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="lot-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="front-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="front-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="front-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="body-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="body-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="body-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="back-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="back-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="back-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="1" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="index-first" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-first" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-first" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-first" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="index-odd" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-odd" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-odd" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-odd" precedence="false" extent="0in"/></fo:simple-page-master><fo:simple-page-master master-name="index-even" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in"><fo:region-body margin-bottom="0.5in" margin-top="0.5in" column-gap="12pt" column-count="2" margin-left="0in" margin-right="0in"/><fo:region-before region-name="xsl-region-before-even" extent="0.4in" precedence="true" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="0.4in" precedence="true" display-align="after"/><fo:region-start border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-outer-even" precedence="false" extent="0in"/><fo:region-end border-width="0" padding="0" reference-orientation="90" region-name="xsl-region-inner-even" precedence="false" extent="0in"/></fo:simple-page-master><fo:page-sequence-master master-name="titlepage"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="titlepage-first" page-position="first"/><fo:conditional-page-master-reference master-reference="titlepage-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="titlepage-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="lot"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="lot-first" page-position="first"/><fo:conditional-page-master-reference master-reference="lot-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="lot-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="front"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="front-first" page-position="first"/><fo:conditional-page-master-reference master-reference="front-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="front-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="body"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="body-first" page-position="first"/><fo:conditional-page-master-reference master-reference="body-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="body-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="back"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="back-first" page-position="first"/><fo:conditional-page-master-reference master-reference="back-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="back-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="index"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="index-first" page-position="first"/><fo:conditional-page-master-reference master-reference="index-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="index-odd"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master></fo:layout-master-set><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="titlepage" language="en" format="i" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"/></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"/></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body"><fo:block id="d0e2"><fo:block><fo:block><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="24.8832pt" text-align="center" space-before="18.6624pt"><fo:block keep-with-next.within-column="always" hyphenate="false">Apache Qpid Broker-J</fo:block></fo:block></fo:block><fo:block><fo:block break-after="page"/><fo:block font-size="14.4pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:block><fo:block break-after="page"/></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="lot" language="en" format="i" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="toc...d0e2"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">Table of Contents</fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Introduction">1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Introduction"><fo:page-number-citation ref-id="Java-Broker-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation">2. Installation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation"><fo:page-number-citation ref-id="Java-Broker-Installation"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Installation" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Introduction">2.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Introduction"><fo:page-number-citation ref-id="Java-Broker-Installation-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes">2.2. Prerequisites</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes"><fo:page-number-citation ref-id="Java-Broker-Installation-Prerequistes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Installation-Prerequistes" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Java">2.2.1. Java Platform</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Java"><fo:page-number-citation ref-id="Java-Broker-Installation-Prerequistes-Java"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Disk">2.2.2. Disk</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Disk"><fo:page-number-citation ref-id="Java-Broker-Installation-Prerequistes-Disk"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Memory">2.2.3. Memory</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-Memory"><fo:page-number-citation ref-id="Java-Broker-Installation-Prerequistes-Memory"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-OperatingSystemAccount">2.2.4. Operating System Account</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Prerequistes-OperatingSystemAccount"><fo:page-number-citation ref-id="Java-Broker-Installation-Prerequistes-OperatingSystemAccount"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Download">2.3. Download</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Download"><fo:page-number-citation ref-id="Java-Broker-Installation-Download"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Installation-Download" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-Download-Release">2.3.1. Broker Release</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-Download-Release"><fo:page-number-citation ref-id="Java-Broker-Installation-Download-Release"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows">2.4. Installation on Windows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows"><fo:page-number-citation ref-id="Java-Broker-Installation-InstallationWindows"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Installation-InstallationWindows" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK">2.4.1. Setting the working directory</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"><fo:page-number-citation ref-id="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix">2.5. Installation on UNIX platforms</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix"><fo:page-number-citation ref-id="Java-Broker-Installation-InstallationUnix"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Installation-InstallationUnix" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK">2.5.1. Setting the working directory</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"><fo:page-number-citation ref-id="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Installation-OptionalDependencies">2.6. Optional Dependencies</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Installation-OptionalDependencies"><fo:page-number-citation ref-id="Java-Broker-Installation-OptionalDependencies"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started">3. Getting Started</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started"><fo:page-number-citation ref-id="Java-Broker-Getting-Started"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Getting-Started" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started-Introduction">3.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started-Introduction"><fo:page-number-citation ref-id="Java-Broker-Getting-Started-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started-Starting-Stopping-Windows">3.2. Starting/Stopping the broker on Windows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started-Starting-Stopping-Windows"><fo:page-number-citation ref-id="Java-Broker-Getting-Started-Starting-Stopping-Windows"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started-Starting-Stopping-Unix">3.3. Starting/Stopping the broker on Unix</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started-Starting-Stopping-Unix"><fo:page-number-citation ref-id="Java-Broker-Getting-Started-Starting-Stopping-Unix"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started-Logging">3.4. Log file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started-Logging"><fo:page-number-citation ref-id="Java-Broker-Getting-Started-Logging"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Getting-Started-CommandLine">3.5. Using the command line</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Getting-Started-CommandLine"><fo:page-number-citation ref-id="Java-Broker-Getting-Started-CommandLine"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts">4. Concepts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts"><fo:page-number-citation ref-id="Java-Broker-Concepts"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Concepts" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Overview">4.1. Overview</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Overview"><fo:page-number-citation ref-id="Java-Broker-Concepts-Overview"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Broker">4.2. Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Broker"><fo:page-number-citation ref-id="Java-Broker-Concepts-Broker"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhost-Nodes">4.3. Virtualhost Nodes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhost-Nodes"><fo:page-number-citation ref-id="Java-Broker-Concepts-Virtualhost-Nodes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-RemoteReplicationNodes">4.4. Remote Replication Nodes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-RemoteReplicationNodes"><fo:page-number-citation ref-id="Java-Broker-Concepts-RemoteReplicationNodes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhosts">4.5. Virtualhosts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhosts"><fo:page-number-citation ref-id="Java-Broker-Concepts-Virtualhosts"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges">4.6. Exchanges</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges"><fo:page-number-citation ref-id="Java-Broker-Concepts-Exchanges"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Concepts-Exchanges" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Predeclared">4.6.1. Predeclared Exchanges</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Predeclared"><fo:page-number-citation ref-id="Java-Broker-Concepts-Exchanges-Predeclared"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types">4.6.2. Exchange Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types"><fo:page-number-citation ref-id="Java-Broker-Concepts-Exchanges-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments">4.6.3. Binding Arguments</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments"><fo:page-number-citation ref-id="Java-Broker-Concepts-Exchanges-BindingArguments"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage">4.6.4. Unrouteable Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:page-number-citation ref-id="Java-Broker-Concepts-Exchanges-UnroutableMessage"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queues">4.7. Queues</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queues"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queues"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Concepts-Queues" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types">4.7.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queues-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Message-Grouping">4.7.2. Messaging Grouping</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Message-Grouping"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queues-Message-Grouping"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers">4.7.3. Forcing all consumers to be non-destructive</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queue-HoldingEntries">4.7.4. Holding messages on a Queue</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-HoldingEntries"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queue-HoldingEntries"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy">4.7.5. Controlling Queue Size</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queue-OverflowPolicy"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-SetLowPrefetch">4.7.6. Using low pre-fetch with special queue types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-SetLowPrefetch"><fo:page-number-citation ref-id="Java-Broker-Concepts-Queues-SetLowPrefetch"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Ports">4.8. Ports</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:page-number-citation ref-id="Java-Broker-Concepts-Ports"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers">4.9. Authentication Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Authentication-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Other-Services">4.10. Other Services</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Other-Services"><fo:page-number-citation ref-id="Java-Broker-Concepts-Other-Services"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Concepts-Other-Services" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Access-Control-Providers">4.10.1. Access Control Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Access-Control-Providers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Access-Control-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Connection-Limit-Providers">4.10.2. Connection Limit Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Connection-Limit-Providers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Connection-Limit-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Group-Providers">4.10.3. Group Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Group-Providers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Group-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Keystores">4.10.4. Keystores</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Keystores"><fo:page-number-citation ref-id="Java-Broker-Concepts-Keystores"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Truststores">4.10.5. Truststores</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Truststores"><fo:page-number-citation ref-id="Java-Broker-Concepts-Truststores"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Concepts-Loggers">4.10.6. Loggers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Concepts-Loggers"><fo:page-number-citation ref-id="Java-Broker-Concepts-Loggers"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration">5. Initial Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Initial-Configuration" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Introduction">5.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Introduction"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location">5.2. Configuration Store Location</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Location"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location">5.3. 'Initial Configuration' Location</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Initial-Config-Location"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Create-Initial-Config">5.4. Creating an 'Initial Configuration' JSON File</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Create-Initial-Config"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Create-Initial-Config"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Type">5.5. Configuration Store Type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Type"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Type"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Configuration-Properties">5.6. Customising Configuration using Configuration Properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Configuration-Properties"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example">5.7. Example of JSON 'Initial Configuration'</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example"><fo:page-number-citation ref-id="Java-Broker-Initial-Configuration-Example"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Virtual-Host-Initial-Configuration">5.8. Virtualhost Initial Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Virtual-Host-Initial-Configuration"><fo:page-number-citation ref-id="Java-Broker-Virtual-Host-Initial-Configuration"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel">6. Management Channels</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel"><fo:page-number-citation ref-id="Java-Broker-Management-Channel"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Channel" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP">6.1. HTTP Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-HTTP"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Channel-HTTP" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP-Introduction">6.1.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP-Introduction"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-HTTP-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP-DefaultConfiguration">6.1.2. Default Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP-DefaultConfiguration"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-HTTP-DefaultConfiguration"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console">6.2. Web Management Console</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Channel-Web-Console" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Accessing">6.2.1. Accessing the Console</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Accessing"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Accessing"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Orientation">6.2.2. Orientation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Orientation"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Orientation"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities">6.2.3. Managing Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Managing-Entities"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API">6.3. REST API</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Channel-REST-API" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Introduction">6.3.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Introduction"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-APIDocs">6.3.2. REST API documentation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-APIDocs"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-APIDocs"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Authentication">6.3.3. Authentication</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Authentication"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Authentication"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Create">6.3.4. Configured Object creation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Create"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Create"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Update">6.3.5. Configured Object update</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Update"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Update"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Delete">6.3.6. Configured Object deletion</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Delete"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Delete"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Get">6.3.7. Retrieving Configured Object details</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Get"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Get"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations">6.3.8. Configured Object operations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Operations"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Status-Codes">6.3.9. HTTP status codes returned by REST interfaces</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Status-Codes"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Status-Codes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Examples">6.3.10. Examples of REST requests with curl</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Examples"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-Examples"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API">6.3.11. Query API</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-Query-API"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-Engine">6.3.12. Query Engine</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-Engine"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-Query-Engine"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-CORS">6.3.13. Cross Origin Resource Sharing (CORS)</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-CORS"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-REST-API-CORS"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Metrics">6.4. Prometheus Metrics</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Metrics"><fo:page-number-citation ref-id="Java-Broker-Management-Metrics"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-AMQP-Intrinstic">6.5. AMQP Intrinstic Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-AMQP-Intrinstic"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-AMQP-Intrinstic"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities">7. Managing Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Entities"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Entities" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General">7.1. General Description</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Entities-General"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker">7.2. Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Broker"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Broker" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Attributes">7.2.1. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Broker-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Context">7.2.2. Context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Context"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Broker-Context"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Children">7.2.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Broker-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Lifecycle">7.2.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Broker-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes">7.3. Virtualhost Nodes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Nodes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Virtualhost-Nodes" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Types">7.3.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Nodes-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">7.3.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Node-Children">7.3.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Node-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Node-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle">7.3.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts">7.4. VirtualHosts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhosts"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Virtualhosts" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts-Types">7.4.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhosts-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Context">7.4.2. Context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Context"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Context"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Attributes">7.4.3. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Children">7.4.4. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Lifecycle">7.4.5. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Virtualhost-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes">7.5. Remote Replication Nodes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-RemoteReplicationNodes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-RemoteReplicationNodes" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes">7.5.1. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Children">7.5.2. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-RemoteReplicationNodes-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Lifecycle">7.5.3. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-RemoteReplicationNodes-Lifecycle"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations">7.5.4. Operations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges">7.6. Exchanges</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Exchanges"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Exchanges" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Types">7.6.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Exchanges-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Attributes">7.6.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Exchanges-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Lifecycle">7.6.3. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Exchanges-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues">7.7. Queues</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Queues"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Queues" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues-Types">7.7.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Queues-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues-Attributes">7.7.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Queues-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Queue-Lifecycle">7.7.3. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queue-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Queue-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Consumers">7.8. Consumers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Consumers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Consumers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Consumers" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Consumers-Context">7.8.1. Context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Consumers-Context"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Consumers-Context"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Producers">7.9. Producers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Producers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Producers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports">7.10. Ports</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Ports"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Ports" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Context">7.10.1. Context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Context"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Ports-Context"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Attributes">7.10.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Ports-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Children">7.10.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Ports-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Lifecycle">7.10.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Ports-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers">7.11. Authentication Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Authentication-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Authentication-Providers" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Types">7.11.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Authentication-Providers-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Attributes">7.11.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Authentication-Providers-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Children">7.11.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Authentication-Providers-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Lifecycle">7.11.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Authentication-Providers-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Authentication-Providers-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores">7.12. Keystores</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Keystores"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Keystores" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Types">7.12.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Keystores-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Attributes">7.12.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Keystores-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Children">7.12.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Keystores-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Lifecycle">7.12.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Keystores-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores">7.13. Truststores</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Truststores"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Truststores" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Types">7.13.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Types"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Truststores-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Attributes">7.13.2. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Truststores-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Children">7.13.3. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Truststores-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Lifecycle">7.13.4. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Truststores-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Group-Providers">7.14. Group Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Group-Providers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Group-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Access-Control-Providers">7.15. Access Control Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Access-Control-Providers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Access-Control-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Connection-Limit-Providers">7.16. Connection Limit Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Connection-Limit-Providers"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Connection-Limit-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP">7.17. HTTP Plugin</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Plugin-HTTP"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Management-Managing-Plugin-HTTP" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Attributes">7.17.1. Attributes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Attributes"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Plugin-HTTP-Attributes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Children">7.17.2. Children</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Children"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Plugin-HTTP-Children"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Lifecycle">7.17.3. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-Management-Managing-Plugin-HTTP-Lifecycle"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security">8. Security</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security"><fo:page-number-citation ref-id="Java-Broker-Security"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers">8.1. Authentication Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:page-number-citation ref-id="Java-Broker-Security-Authentication-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security-Authentication-Providers" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider">8.1.1. Simple LDAP</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-LDAP-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Kerberos-Provider">8.1.2. Kerberos</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Kerberos-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-Kerberos-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-OAuth2-Provider">8.1.3. OAuth2</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-OAuth2-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-OAuth2-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-External-Provider">8.1.4. External (SSL Client Certificates)</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-External-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-External-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Anonymous-Provider">8.1.5. Anonymous</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Anonymous-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-Anonymous-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers">8.1.6. SCRAM SHA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers"><fo:page-number-citation ref-id="Java-Broker-Security-ScramSha-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider">8.1.7. Plain</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-Plain-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider">8.1.8. Plain Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-PlainPasswordFile-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider">8.1.9. MD5 Provider</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-MD5-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider">8.1.10. Base64MD5 Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-Base64MD5PasswordFile-Provider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Composite-Provider">8.1.11. Composite Provider</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Composite-Provider"><fo:page-number-citation ref-id="Java-Broker-Security-Composite-Provider"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Group-Providers">8.2. Group Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:page-number-citation ref-id="Java-Broker-Security-Group-Providers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security-Group-Providers" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="File-Group-Manager">8.2.1. GroupFile Provider</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="File-Group-Manager"><fo:page-number-citation ref-id="File-Group-Manager"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Group-Providers-ManagedGroupProvider">8.2.2. ManagedGroupProvider</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers-ManagedGroupProvider"><fo:page-number-citation ref-id="Java-Broker-Security-Group-Providers-ManagedGroupProvider"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Group-Providers-CloudFoundry">8.2.3. CloudFoundryDashboardManagementGroupProvider</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers-CloudFoundry"><fo:page-number-citation ref-id="Java-Broker-Security-Group-Providers-CloudFoundry"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders">8.3. Access Control Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security-AccessControlProviders" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-Types">8.3.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-Types"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-ACLRules">8.3.2. |
| ACL Rules |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-ACLRules"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-ACLRules"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-Syntax">8.3.3. |
| Syntax |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-Syntax"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-Syntax"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-WorkedExamples">8.3.4. |
| Worked Examples |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-WorkedExamples"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-WorkedExamples"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders">8.4. Connection Limit Providers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security-ConnectionLimitProviders" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Types">8.4.1. Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Types"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Rules">8.4.2. |
| Connection Limit Rules |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Rules"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-Rules"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Syntax">8.4.3. |
| Syntax |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Syntax"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-Syntax"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-WorkedExample">8.4.4. |
| Worked Example |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption">8.5. Configuration Encryption</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:page-number-citation ref-id="Java-Broker-Security-Configuration-Encryption"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Security-Configuration-Encryption" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption-Configuration">8.5.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption-Configuration"><fo:page-number-citation ref-id="Java-Broker-Security-Configuration-Encryption-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations">8.5.2. Alternate Implementations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations"><fo:page-number-citation ref-id="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime">9. Runtime</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime"><fo:page-number-citation ref-id="Java-Broker-Runtime"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging">9.1. Logging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Logging" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Concepts">9.1.1. Concepts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Concepts"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Concepts"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Default-Configuration">9.1.2. Default Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Default-Configuration"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Default-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Loggers">9.1.3. Loggers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Loggers"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Loggers"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-InclusionRules">9.1.4. Inclusion Rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-InclusionRules"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-InclusionRules"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management">9.1.5. Logging Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Management"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management">9.2. Disk Space Management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management"><fo:page-number-citation ref-id="Java-Broker-Runtime-Disk-Space-Management"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Disk-Space-Management" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control">9.2.1. Disk quota-based flow control</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:page-number-citation ref-id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout">9.3. Transaction Timeout</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:page-number-citation ref-id="Java-Broker-Runtime-Transaction-Timeout"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Transaction-Timeout" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-GeneralInformation">9.3.1. General Information</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-GeneralInformation"><fo:page-number-citation ref-id="Java-Broker-Runtime-Transaction-Timeout-GeneralInformation"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Purpose">9.3.2. Purpose</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Purpose"><fo:page-number-citation ref-id="Java-Broker-Runtime-Transaction-Timeout-Purpose"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Effect">9.3.3. Effect</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Effect"><fo:page-number-citation ref-id="Java-Broker-Runtime-Transaction-Timeout-Effect"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Configuration">9.3.4. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout-Configuration"><fo:page-number-citation ref-id="Java-Broker-Runtime-Transaction-Timeout-Configuration"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages">9.4. Handing Undeliverable Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages"><fo:page-number-citation ref-id="Java-Broker-Runtime-Handling-Undeliverable-Messages"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Handling-Undeliverable-Messages" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Introduction">9.4.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Introduction"><fo:page-number-citation ref-id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count">9.4.2. Maximum Delivery Count</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:page-number-citation ref-id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues">9.4.3. Alternate Binding</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"><fo:page-number-citation ref-id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route">9.5. Closing client connections on unroutable mandatory messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route"><fo:page-number-citation ref-id="Java-Broker-Runtime-Close-Connection-When-No-Route"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Close-Connection-When-No-Route" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route-Summary">9.5.1. Summary</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route-Summary"><fo:page-number-citation ref-id="Java-Broker-Runtime-Close-Connection-When-No-Route-Summary"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration">9.5.2. Configuring |
| <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> |
| </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"><fo:page-number-citation ref-id="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk">9.6. Flow to Disk</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:page-number-citation ref-id="Java-Broker-Runtime-Flow-To-Disk"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Flow-To-Disk" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk-Monitoring">9.6.1. Flow to Disk Monitoring</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk-Monitoring"><fo:page-number-citation ref-id="Java-Broker-Runtime-Flow-To-Disk-Monitoring"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk-Logging">9.6.2. Flow to Disk Logging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk-Logging"><fo:page-number-citation ref-id="Java-Broker-Runtime-Flow-To-Disk-Logging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Consumers">9.7. Consumers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Consumers"><fo:page-number-citation ref-id="Java-Broker-Runtime-Consumers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Consumers" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Consumers-Prioirty">9.7.1. Priority</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Consumers-Prioirty"><fo:page-number-citation ref-id="Java-Broker-Runtime-Consumers-Prioirty"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Background-Recovery">9.8. Background Recovery</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Background-Recovery"><fo:page-number-citation ref-id="Java-Broker-Runtime-Background-Recovery"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Message-Compression">9.9. Message Compression</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Message-Compression"><fo:page-number-citation ref-id="Java-Broker-Runtime-Message-Compression"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Connection-Limit">9.10. Connection Limits</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Connection-Limit"><fo:page-number-citation ref-id="Java-Broker-Runtime-Connection-Limit"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory">9.11. Memory</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Runtime-Memory" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Introduction">9.11.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Introduction"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Types">9.11.2. Types of Memory</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Types"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Types"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage">9.11.3. Memory Usage in the Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Usage"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory">9.11.4. Low Memory Conditions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Low-Memory"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Defaults">9.11.5. Defaults</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Defaults"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Defaults"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Tuning">9.11.6. Memory Tuning the Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Tuning"><fo:page-number-citation ref-id="Java-Broker-Runtime-Memory-Tuning"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Instrumentation">9.12. Broker Instrumentation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Instrumentation"><fo:page-number-citation ref-id="Java-Broker-Runtime-Instrumentation"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability">10. High Availability</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability"><fo:page-number-citation ref-id="Java-Broker-High-Availability"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-High-Availability" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-GeneralIntroduction">10.1. General Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-GeneralIntroduction"><fo:page-number-citation ref-id="Java-Broker-High-Availability-GeneralIntroduction"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA">10.2. High Availability Overview</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA"><fo:page-number-citation ref-id="Java-Broker-High-Availability-OverviewOfHA"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-CreatingGroup">10.3. Creating a group</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-CreatingGroup"><fo:page-number-citation ref-id="Java-Broker-High-Availability-CreatingGroup"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour">10.4. Behaviour of the Group</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-High-Availability-Behaviour" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-Default-Behaviour">10.4.1. Default Behaviour</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-Default-Behaviour"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-Default-Behaviour"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy">10.4.2. Synchronization Policy</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-NodePriority">10.4.3. Node Priority</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-NodePriority"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-NodePriority"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes">10.4.4. Required Minimum Number Of Nodes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary">10.4.5. Allow to Operate Solo</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MaximumMessageSize">10.4.6. Maximum message size</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MaximumMessageSize"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Behaviour-MaximumMessageSize"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations">10.5. Node Operations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations"><fo:page-number-citation ref-id="Java-Broker-High-Availability-NodeOperations"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-High-Availability-NodeOperations" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations-Lifecycle">10.5.1. Lifecycle</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations-Lifecycle"><fo:page-number-citation ref-id="Java-Broker-High-Availability-NodeOperations-Lifecycle"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations-TransferMaster">10.5.2. Transfer Master</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-NodeOperations-TransferMaster"><fo:page-number-citation ref-id="Java-Broker-High-Availability-NodeOperations-TransferMaster"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-ClientFailover">10.6. Client failover</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-ClientFailover"><fo:page-number-citation ref-id="Java-Broker-High-Availability-ClientFailover"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-DiskSpace">10.7. Disk space requirements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-DiskSpace"><fo:page-number-citation ref-id="Java-Broker-High-Availability-DiskSpace"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Network-Requirements">10.8. Network Requirements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Network-Requirements"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Network-Requirements"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Security">10.9. Security</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Security"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Security"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Backup">10.10. Backups</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Backup"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Backup"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-Reset-Group-Infomational">10.11. Reset Group Information</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-Reset-Group-Infomational"><fo:page-number-citation ref-id="Java-Broker-High-Availability-Reset-Group-Infomational"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery">11. Backup And Recovery</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Backup-And-Recovery" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Broker">11.1. Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Broker"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Broker"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node">11.2. Virtualhost Node</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Backup-And-Recovery-Virtualhost-Node" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB">11.2.1. BDB</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA">11.2.2. BDB-HA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-Derby">11.2.3. Derby</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-Derby"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-Derby"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JDBC">11.2.4. JDBC</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JDBC"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JDBC"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON">11.2.5. JSON</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost">11.3. Virtualhost</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Backup-And-Recovery-Virtualhost" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-BDB">11.3.1. BDB</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-BDB"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-BDB"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Derby">11.3.2. Derby</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Derby"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Derby"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC">11.3.3. JDBC</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Provided">11.3.4. Provided</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Provided"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-Provided"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA">11.3.5. BDB-HA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA"><fo:page-number-citation ref-id="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables">A. Environment Variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables"><fo:page-number-citation ref-id="Java-Broker-Appendix-Environment-Variables"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-System-Properties">B. System Properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-System-Properties"><fo:page-number-citation ref-id="Java-Broker-Appendix-System-Properties"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging">C. Operational Logging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Statistics-Reporting">D. Statistics Reporting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Statistics-Reporting"><fo:page-number-citation ref-id="Java-Broker-Appendix-Statistics-Reporting"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Appendix-Statistics-Reporting" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e12961">D.1. Statistics Report Period</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e12961"><fo:page-number-citation ref-id="d0e12961"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e12971">D.2. Statistic Report Patterns</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e12971"><fo:page-number-citation ref-id="d0e12971"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13030">D.3. Examples</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13030"><fo:page-number-citation ref-id="d0e13030"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts">E. Queue Alerts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts"><fo:page-number-citation ref-id="Java-Broker-Appendix-Queue-Alerts"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Miscellaneous">F. Miscellaneous</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Miscellaneous"><fo:page-number-citation ref-id="Java-Broker-Miscellaneous"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Miscellaneous" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification">F.1. JVM Installation verification</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification"><fo:page-number-citation ref-id="Java-Broker-Miscellaneous-JVM-Verification"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Miscellaneous-JVM-Verification" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Windows">F.1.1. Verify JVM on Windows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Windows"><fo:page-number-citation ref-id="Java-Broker-Miscellaneous-JVM-Verification-Windows"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Unix">F.1.2. Verify JVM on Unix</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Unix"><fo:page-number-citation ref-id="Java-Broker-Miscellaneous-JVM-Verification-Unix"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver">F.2. Installing External JDBC Driver</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:page-number-citation ref-id="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Declare-Arguments">G. Queue Declaration Arguments supported by the Broker</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Declare-Arguments"><fo:page-number-citation ref-id="Java-Broker-Appendix-Queue-Declare-Arguments"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration">H. BDB HA initial configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration"><fo:page-number-citation ref-id="Java-Broker-Appendix-BDB-HA-initial-configuration"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Appendix-BDB-HA-initial-configuration" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration-example">H.1. Example of BDB HA 'Initial Configuration'</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration-example"><fo:page-number-citation ref-id="Java-Broker-Appendix-BDB-HA-initial-configuration-example"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration-creation">H.2. Creation of BDB HA group using an initial configuration.</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration-creation"><fo:page-number-citation ref-id="Java-Broker-Appendix-BDB-HA-initial-configuration-creation"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker">12. Docker Images</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker"><fo:page-number-citation ref-id="Java-Broker-Docker"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Docker" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Building-Image">12.1. Building Container Image</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Building-Image"><fo:page-number-citation ref-id="Java-Broker-Docker-Building-Image"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Running-The-Container">12.2. Running the Container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Running-The-Container"><fo:page-number-citation ref-id="Java-Broker-Docker-Running-The-Container"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Docker-Running-The-Container" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Container-Start">12.2.1. Container Start</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Container-Start"><fo:page-number-citation ref-id="Java-Broker-Docker-Container-Start"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Container-Volume">12.2.2. Container Volume</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Container-Volume"><fo:page-number-citation ref-id="Java-Broker-Docker-Container-Volume"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Container-Stop">12.2.3. Stopping the Container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Container-Stop"><fo:page-number-citation ref-id="Java-Broker-Docker-Container-Stop"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Users">12.3. Broker Users</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Users"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Users"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization">12.4. Broker Customization</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Customization"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.d0e2.Java-Broker-Docker-Broker-Customization" margin-left="24pt"><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Exchanges">12.4.1. Exchanges</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Exchanges"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Customization-Exchanges"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Queues">12.4.2. Queues</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Queues"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Customization-Queues"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Users">12.4.3. Users</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Users"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Customization-Users"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Override">12.4.4. Overriding Broker Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Docker-Broker-Customization-Override"><fo:page-number-citation ref-id="Java-Broker-Docker-Broker-Customization-Override"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="lot" language="en" format="i" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="lot...figure...d0e2"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">List of Figures</fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e403">4.1. Message Flow through Key Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e403"><fo:page-number-citation ref-id="d0e403"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e415">4.2. Broker Structure showing major entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e415"><fo:page-number-citation ref-id="d0e415"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e523">4.3. Virtualhost Model showing major entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e523"><fo:page-number-citation ref-id="d0e523"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e641">4.4. Direct exchange</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e641"><fo:page-number-citation ref-id="d0e641"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e683">4.5. Topic exchange - exact match on topic name</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e683"><fo:page-number-citation ref-id="d0e683"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e696">4.6. Topic exchange - matching on hierarchical topic patterns</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e696"><fo:page-number-citation ref-id="d0e696"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e734">4.7. Topic exchange - matching on JMS message selector</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e734"><fo:page-number-citation ref-id="d0e734"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e781">4.8. Fanout exchange</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e781"><fo:page-number-citation ref-id="d0e781"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1315">4.9. Control flow during Authentication</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1315"><fo:page-number-citation ref-id="d0e1315"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1860">6.1. Web Management Console - Authentication</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1860"><fo:page-number-citation ref-id="d0e1860"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1874">6.2. Web Management Orientation - Console</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1874"><fo:page-number-citation ref-id="d0e1874"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Orientation-Tab">6.3. Web Management Orientation - Tab</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Orientation-Tab"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Orientation-Tab"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue">6.4. Web Management Orientation - Add Dialogue</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue">6.5. Web Management Orientation - Edit Dialogue</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue">6.6. Web Management Orientation - Context Variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue"><fo:page-number-citation ref-id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-FileLogger">9.1. Viewing a file logger</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-FileLogger"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Management-FileLogger"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-InclusionRule">9.2. Editing an inclusion rule</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-InclusionRule"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Management-InclusionRule"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-MemoryLogger">9.3. Viewing a memory logger</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-MemoryLogger"><fo:page-number-citation ref-id="Java-Broker-Runtime-Logging-Management-MemoryLogger"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA-Figure">10.1. 3-node group deployed across three Brokers.</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA-Figure"><fo:page-number-citation ref-id="Java-Broker-High-Availability-OverviewOfHA-Figure"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e9872">10.2. Creating 1st node in a group</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e9872"><fo:page-number-citation ref-id="d0e9872"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e9930">10.3. Adding subsequent nodes to the group</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e9930"><fo:page-number-citation ref-id="d0e9930"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e9942">10.4. View of group from one node</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e9942"><fo:page-number-citation ref-id="d0e9942"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="lot" language="en" format="i" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="lot...table...d0e2"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">List of Tables</fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1096">4.1. Setting the replay period using a Qpid JMS AMQP 0-x address</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1096"><fo:page-number-citation ref-id="d0e1096"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1636">5.1. Base Configuration Properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1636"><fo:page-number-citation ref-id="d0e1636"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2274">6.1. HTTP status codes returned by REST interfaces</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2274"><fo:page-number-citation ref-id="d0e2274"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2425">6.2. Query API URLs</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2425"><fo:page-number-citation ref-id="d0e2425"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2484">6.3. Query API request parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2484"><fo:page-number-citation ref-id="d0e2484"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2695">6.4. Query API functions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2695"><fo:page-number-citation ref-id="d0e2695"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2818">6.5. Query Engine Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2818"><fo:page-number-citation ref-id="d0e2818"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2927">6.6. Additional Request Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2927"><fo:page-number-citation ref-id="d0e2927"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3086">6.7. Query Engine Domains</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3086"><fo:page-number-citation ref-id="d0e3086"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3233">6.8. BETWEEN Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3233"><fo:page-number-citation ref-id="d0e3233"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3298">6.9. EQUAL Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3298"><fo:page-number-citation ref-id="d0e3298"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3359">6.10. GREATER THAN Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3359"><fo:page-number-citation ref-id="d0e3359"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3420">6.11. GREATER THAN OR EQUAL Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3420"><fo:page-number-citation ref-id="d0e3420"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3481">6.12. IN Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3481"><fo:page-number-citation ref-id="d0e3481"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3546">6.13. IS NULL Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3546"><fo:page-number-citation ref-id="d0e3546"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3596">6.14. LESS THAN Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3596"><fo:page-number-citation ref-id="d0e3596"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3657">6.15. LESS THAN OR EQUAL Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3657"><fo:page-number-citation ref-id="d0e3657"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3718">6.16. LIKE Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3718"><fo:page-number-citation ref-id="d0e3718"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3797">6.17. CASE Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3797"><fo:page-number-citation ref-id="d0e3797"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3854">6.18. Default sorting fields</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3854"><fo:page-number-citation ref-id="d0e3854"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e3977">6.19. AVG Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e3977"><fo:page-number-citation ref-id="d0e3977"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4027">6.20. COUNT Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4027"><fo:page-number-citation ref-id="d0e4027"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4077">6.21. MAX Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4077"><fo:page-number-citation ref-id="d0e4077"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4127">6.22. MIN Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4127"><fo:page-number-citation ref-id="d0e4127"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4177">6.23. SUM Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4177"><fo:page-number-citation ref-id="d0e4177"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4255">6.24. DATE Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4255"><fo:page-number-citation ref-id="d0e4255"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4309">6.25. DATEADD Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4309"><fo:page-number-citation ref-id="d0e4309"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4381">6.26. DATEDIFF Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4381"><fo:page-number-citation ref-id="d0e4381"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4453">6.27. EXTRACT Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4453"><fo:page-number-citation ref-id="d0e4453"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4517">6.28. COALESCE Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4517"><fo:page-number-citation ref-id="d0e4517"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4570">6.29. ABS Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4570"><fo:page-number-citation ref-id="d0e4570"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4620">6.30. ROUND Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4620"><fo:page-number-citation ref-id="d0e4620"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4681">6.31. TRUNC Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4681"><fo:page-number-citation ref-id="d0e4681"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4745">6.32. LENGTH Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4745"><fo:page-number-citation ref-id="d0e4745"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4795">6.33. LENGTH Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4795"><fo:page-number-citation ref-id="d0e4795"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4845">6.34. LOWER Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4845"><fo:page-number-citation ref-id="d0e4845"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4895">6.35. LTRIM Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4895"><fo:page-number-citation ref-id="d0e4895"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e4956">6.36. POSITION Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e4956"><fo:page-number-citation ref-id="d0e4956"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e5028">6.37. REPLACE Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e5028"><fo:page-number-citation ref-id="d0e5028"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e5100">6.38. RTRIM Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e5100"><fo:page-number-citation ref-id="d0e5100"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e5161">6.39. SUBSTRING Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e5161"><fo:page-number-citation ref-id="d0e5161"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e5233">6.40. TRIM Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e5233"><fo:page-number-citation ref-id="d0e5233"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e5294">6.41. UPPER Parameters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e5294"><fo:page-number-citation ref-id="d0e5294"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e7358">8.1. SASL Mechanisms</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e7358"><fo:page-number-citation ref-id="d0e7358"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_permissions">8.2. List of ACL permission</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_permissions"><fo:page-number-citation ref-id="table-Java-Broker-Security-AccessControlProviders-Syntax_permissions"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_actions">8.3. List of ACL actions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_actions"><fo:page-number-citation ref-id="table-Java-Broker-Security-AccessControlProviders-Syntax_actions"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_objects">8.4. List of ACL objects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_objects"><fo:page-number-citation ref-id="table-Java-Broker-Security-AccessControlProviders-Syntax_objects"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_properties">8.5. List of ACL properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="table-Java-Broker-Security-AccessControlProviders-Syntax_properties"><fo:page-number-citation ref-id="table-Java-Broker-Security-AccessControlProviders-Syntax_properties"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="table-Java-Broker-Security-ConnectionLimitProviders-Syntax_properties">8.6. List of connection limit (CLT) properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="table-Java-Broker-Security-ConnectionLimitProviders-Syntax_properties"><fo:page-number-citation ref-id="table-Java-Broker-Security-ConnectionLimitProviders-Syntax_properties"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e9301">9.1. Setting the consumer priority</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e9301"><fo:page-number-citation ref-id="d0e9301"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e10490">A.1. Environment variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e10490"><fo:page-number-citation ref-id="d0e10490"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e10658">B.1. System properties</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e10658"><fo:page-number-citation ref-id="d0e10658"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Actor-Format">C.1. Actors Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Actor-Format"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Actor-Format"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Subject-Format">C.2. Subject Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Subject-Format"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Subject-Format"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Broker">C.3. Broker Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Broker"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Broker"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Management">C.4. Management Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Management"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Management"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost">C.5. Virtual Host Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Queue">C.6. Queue Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange">C.7. Exchange Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Binding">C.8. Binding Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Binding"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Binding"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Connection">C.9. Connection Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Connection"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Connection"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Channel">C.10. Channel Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Channel"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Channel"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription">C.11. Subscription Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore">C.12. Message Store Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore">C.13. Transaction Store Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore">C.14. Configuration Store Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-HA">C.15. HA Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-HA"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-HA"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Port">C.16. Port Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Port"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-Port"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit">C.17. Resource Limit Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-User">C.18. User Log Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-User"><fo:page-number-citation ref-id="Java-Broker-Appendix-Operation-Logging-Message-List-User"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages">E.1. Queue Alerts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages"><fo:page-number-citation ref-id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Java-Broker-Appendix-Supported-Queue-Declare-Arguments">G.1. Queue declare arguments</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Appendix-Supported-Queue-Declare-Arguments"><fo:page-number-citation ref-id="Java-Broker-Appendix-Supported-Queue-Declare-Arguments"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13779">12.1. Environment Variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13779"><fo:page-number-citation ref-id="d0e13779"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="lot" language="en" format="i" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Apache Qpid Broker-J</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="lot...example...d0e2"><fo:block><fo:block><fo:block space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats">List of Examples</fo:block></fo:block></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1705">5.1. JSON 'Initial configuration' File</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1705"><fo:page-number-citation ref-id="d0e1705"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e1769">5.2. Example of virtual host initial configuration provided as stringified JSON</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e1769"><fo:page-number-citation ref-id="d0e1769"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2147">6.1. Examples of REST calls for Queue creation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2147"><fo:page-number-citation ref-id="d0e2147"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2167">6.2. Examples of REST calls for Queue update</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2167"><fo:page-number-citation ref-id="d0e2167"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2192">6.3. Examples of REST calls for Queue deletion</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2192"><fo:page-number-citation ref-id="d0e2192"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2264">6.4. Example REST call invoking the operation clear queue</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2264"><fo:page-number-citation ref-id="d0e2264"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2378">6.5. Examples of queue creation using curl (authenticating as user admin):</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2378"><fo:page-number-citation ref-id="d0e2378"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2594">6.6. Example of a Query API request to retrieve queue names and depths.</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2594"><fo:page-number-citation ref-id="d0e2594"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e2639">6.7. Example of Query API call for queue names and depths.</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e2639"><fo:page-number-citation ref-id="d0e2639"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8226">8.1. Worked example 1 - Management rights</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8226"><fo:page-number-citation ref-id="d0e8226"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8249">8.2. Worked example 2a - Simple Messaging - Broker ACL rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8249"><fo:page-number-citation ref-id="d0e8249"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8254">8.3. Worked example 2b - Simple Messaging - Broker ACL rules with multi-value property</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8254"><fo:page-number-citation ref-id="d0e8254"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8264">8.4. Worked example 2 - Simple Messaging - Virtualhost ACL rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8264"><fo:page-number-citation ref-id="d0e8264"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8274">8.5. Worked example 3 - firewall-like access control</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8274"><fo:page-number-citation ref-id="d0e8274"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e8463">8.6. CLT file example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e8463"><fo:page-number-citation ref-id="d0e8463"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e9203">9.1. Flow to Disk logging rule</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e9203"><fo:page-number-citation ref-id="d0e9203"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e10317">10.1. Resetting of replication group with <fo:inline font-family="monospace">DbResetRepGroup</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e10317"><fo:page-number-citation ref-id="d0e10317"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e10385">11.1. Performing store backup by using <fo:inline font-family="monospace">BDBBackup</fo:inline> class |
| directly</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e10385"><fo:page-number-citation ref-id="d0e10385"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13041">D.1. Enabling statistics for a single queue using the REST API and cURL</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13041"><fo:page-number-citation ref-id="d0e13041"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13053">D.2. Disabling statistics for a single queue using the REST API and cURL</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13053"><fo:page-number-citation ref-id="d0e13053"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13060">D.3. Enabling statistics for all queues using the REST API and cURL</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13060"><fo:page-number-citation ref-id="d0e13060"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="d0e13557">H.1. BDB HA 'Initial configuration'</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e13557"><fo:page-number-citation ref-id="d0e13557"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="1" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Introduction</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Introduction</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Introduction"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Apache Qpid Broker-J is a powerful open-source message broker that implements all versions of the |
| <fo:basic-link external-destination="url(http://www.amqp.org)"><fo:inline> Advanced Message Queuing Protocol (AMQP)</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://www.amqp.org)">http://www.amqp.org</fo:basic-link>]</fo:inline>. The Apache Qpid Broker-J |
| is actually one of two message brokers provided by the <fo:basic-link external-destination="url(http://qpid.apache.org)"><fo:inline>Apache Qpid project</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://qpid.apache.org)">http://qpid.apache.org</fo:basic-link>]</fo:inline>: Qpid Broker-J and the C++ |
| Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This document relates to the Apache Qpid Broker-J. The <fo:basic-link external-destination="url(/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/)"><fo:inline>C++ Broker is |
| described separately</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/)">/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/</fo:basic-link>]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Headline features</fo:inline></fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e25"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e26"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>100% Java implementation - runs on any platform supporting Java 11 or higher</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e29"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Messaging clients support in Java (JMS 1.1 and 2.0 compliance), C++, Python and more.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e32"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Persistent and non-persistent (transient) message support</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e35"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Supports for all common messaging patterns (point-to-point, publish/subscribe, fan-out |
| etc).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e38"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Transaction support including XA<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>XA provided when using AMQP 0-10</fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e44"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Supports for all versions of the AMQP protocol (0-8, 0-9, 0-9-1, 0-10 and 1.0).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e47"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Supports for AMQP over websockets.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e50"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Automatic message translation, allowing clients using different AMQP versions to communicate with each other.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e53"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Pluggable authentication architecture with out-of-the-box support for Kerberos, LDAP, |
| External, OAuth2, and file-based authentication mechanisms.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e56"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Support for message compression</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e59"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Pluggable storage architecture with implementations including <fo:basic-link external-destination="url(http://db.apache.org/derby/)"><fo:inline>Apache |
| Derby</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://db.apache.org/derby/)">http://db.apache.org/derby/</fo:basic-link>]</fo:inline>, <fo:basic-link external-destination="url(${oracleBdbProductOverviewUrl})"><fo:inline> |
| Oracle BDB JE</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(${oracleBdbProductOverviewUrl})">${oracleBdbProductOverviewUrl}</fo:basic-link>]</fo:inline>, and External Databases. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e68"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Web based management interface and programmatic management interfaces via REST.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e71"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>SSL support</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e74"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>High availability (HA) support.<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline>HA currently only available with the Oracle BDB JE message store option.</fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Installation</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Installation</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Installation"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 2. Installation</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="20.735999999999997pt">2.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This document describes how to install the Apache Qpid Broker-J on both Windows and UNIX |
| platforms.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Prerequisites</fo:marker><fo:block font-size="20.735999999999997pt">2.2. Prerequisites</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-Java"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Java Platform</fo:marker><fo:block font-size="17.28pt">2.2.1. Java Platform</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Apache Qpid Broker-J is an 100% Java implementation and as such it can be used on any |
| operating system supporting Java 11 or higher<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>Java Cryptography Extension (JCE) |
| Unlimited Strength extension must be installed or enabled for some features.</fo:block></fo:footnote-body></fo:footnote>. This includes Linux, |
| Solaris, Mac OS X, and Windows 7/8/10 etc.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker has been tested with Java implementations from both Oracle and IBM. Whatever |
| platform you chose, it is recommended that you ensure it is patched with any critical |
| updates made available from the vendor. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Verify that your JVM is installed properly by following <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification"><fo:inline>these instructions.</fo:inline></fo:basic-link> |
| </fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-Disk"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Disk</fo:marker><fo:block font-size="17.28pt">2.2.2. Disk</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker installation requires approximately 20MB of free disk space.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker also requires a working directory. The working directory is used for the |
| message store, that is, the area of the file-system used to record messages |
| whilst they are passing through the Broker. The working directory is also used for the |
| default location of the log file. The size of the working directory will depend on the how |
| the Broker is used.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The performance of the file system hosting the work directory is key to the performance |
| of Broker as a whole. For best performance, choose a device that has low latency and one |
| that is uncontended by other applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Be aware that there are additional considerations if you are considering hosting the |
| working directory on NFS.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Memory</fo:marker><fo:block font-size="17.28pt">2.2.3. Memory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Qpid caches messages in memory for performance reasons, so in general, the Broker will |
| benefit from as much memory as possible. However, on a 32bit JVM, the maximum addressable |
| memory range for a process is 4GB, after leaving space for the JVM's own use this will give |
| a maximum usable size of approximately ~3.7GB.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory"><fo:inline>Section 9.11, “Memory”</fo:inline></fo:basic-link> for a full description of how memory is |
| used.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-OperatingSystemAccount"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operating System Account</fo:marker><fo:block font-size="17.28pt">2.2.4. Operating System Account</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Installation or operation of Qpid does <fo:inline font-style="italic">not</fo:inline> require a privileged |
| account (i.e. root on UNIX platforms or Administrator on Windows). However it is suggested |
| that you use an dedicated account (e.g. qpid) for the installation and operation of the Broker.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-Download"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Download</fo:marker><fo:block font-size="20.735999999999997pt">2.3. Download</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-Download-Release"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker Release</fo:marker><fo:block font-size="17.28pt">2.3.1. Broker Release</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You can download the latest Broker package from the <fo:basic-link external-destination="url(http://qpid.apache.org/download.html)"><fo:inline>Download Page</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://qpid.apache.org/download.html)">http://qpid.apache.org/download.html</fo:basic-link>]</fo:inline>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> It is recommended that you confirm the integrity of the download by verifying the PGP |
| signature matches that available on the site. Instructions are given on the download page. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-InstallationWindows"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Installation on Windows</fo:marker><fo:block font-size="20.735999999999997pt">2.4. Installation on Windows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Firstly, verify that your JVM is installed properly by following <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Windows"><fo:inline>these instructions.</fo:inline></fo:basic-link> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now chose a directory for Qpid broker installation. This directory will be used for the |
| Qpid JARs and configuration files. It need not be the same location as the work directory used |
| for the persistent message store or the log file (you will choose this location later). For |
| the remainder this example we will assume that location c:\qpid has been chosen.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Next extract the qpid-broker-9.2.0-bin.zip package into the directory, using either |
| the zip file handling offered by Windows (right click the file and select 'Extract All') or a |
| third party tool of your choice.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The extraction of the broker package will have created a directory |
| qpid-broker\\9.2.0 within c:\qpid</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e163"> |
| Directory of c:\qpid\qpid-broker\\9.2.0 |
| |
| 25/11/2015 11:29 <DIR> . |
| 25/11/2015 11:29 <DIR> .. |
| 25/11/2015 10:56 <DIR> bin |
| 03/07/2015 08:06 <DIR> etc |
| 25/11/2015 11:25 <DIR> lib |
| 25/11/2015 10:56 28,143 LICENSE |
| 25/11/2015 10:56 3,409 NOTICE |
| 29/04/2015 09:13 116 README.txt |
| 3 File(s) 31,668 bytes |
| 5 Dir(s) 25,981,767,680 bytes free |
| </fo:block><fo:block id="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Setting the working directory</fo:marker><fo:block font-size="17.28pt">2.4.1. Setting the working directory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Qpid requires a work directory. This directory is used for the default location of the |
| Qpid log file and is used for the storage of persistent messages. The work directory can be |
| set on the command-line (for the lifetime of the command interpreter), but you will normally |
| want to set the environment variable permanently via the Advanced System Settings in the |
| Control Panel.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e170">set QPID_WORK=C:\qpidwork</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the directory referred to by <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Work"><fo:inline>QPID_WORK</fo:inline></fo:basic-link> does not |
| exist, the Broker will attempt to create it on start-up.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-InstallationUnix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Installation on UNIX platforms</fo:marker><fo:block font-size="20.735999999999997pt">2.5. Installation on UNIX platforms</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Firstly, verify that your JVM is installed properly by following <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification-Unix"><fo:inline>these instructions.</fo:inline></fo:basic-link> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now chose a directory for Qpid broker installation. This directory will be used for the |
| Qpid JARs and configuration files. It need not be the same location as the work directory used |
| for the persistent message store or the log file (you will choose this location later). For |
| the remainder this example we will assume that location /usr/local/qpid has been |
| chosen.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Next extract the qpid-broker-9.2.0-bin.tgz package into the directory.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e189">mkdir /usr/local/qpid |
| cd /usr/local/qpid |
| tar xvzf qpid-broker-9.2.0-bin.tgz</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The extraction of the broker package will have created a directory |
| qpid-broker/9.2.0 within /usr/local/qpid</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e193">ls -la qpid-broker/9.2.0/ |
| total 56 |
| drwxrwxr-x. 5 alex alex 4096 Nov 25 11:43 . |
| drwxrwxr-x. 3 alex alex 4096 Nov 25 11:43 .. |
| drwxr-xr-x. 2 alex alex 4096 Nov 24 23:38 bin |
| drwxr-xr-x. 2 alex alex 4096 Nov 24 23:38 etc |
| drwxrwxr-x. 2 alex alex 4096 Nov 25 11:43 lib |
| -rw-r--r--. 1 alex alex 28143 Nov 24 23:38 LICENSE |
| -rw-r--r--. 1 alex alex 3409 Nov 24 23:38 NOTICE |
| -rw-r--r--. 1 alex alex 116 Nov 24 23:38 README.txt |
| </fo:block><fo:block id="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Setting the working directory</fo:marker><fo:block font-size="17.28pt">2.5.1. Setting the working directory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Qpid requires a work directory. This directory is used for the default location of the |
| Qpid log file and is used for the storage of persistent messages. The work directory can be |
| set on the command-line (for the lifetime of the current shell), but you will normally want |
| to set the environment variable permanently the user's shell profile file (~/.bash_profile |
| for Bash etc).</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e200">export QPID_WORK=/var/qpidwork |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the directory referred to by <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Work"><fo:inline>QPID_WORK</fo:inline></fo:basic-link> does not |
| exist, the Broker will attempt to create it on start-up. </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-OptionalDependencies"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Optional Dependencies</fo:marker><fo:block font-size="20.735999999999997pt">2.6. Optional Dependencies</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If you wish to utilise a storage option using an External Database, see |
| <fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:inline>Section F.2, “Installing External JDBC Driver”</fo:inline></fo:basic-link> for details of |
| installing their dependencies.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Getting Started</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Getting Started</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Getting-Started"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 3. Getting Started</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="20.735999999999997pt">3.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This section describes how to start and stop the Broker, and outlines the various command line options. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For additional details about the broker configuration store and related command line arguments see |
| <fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:inline>Chapter 5, <fo:inline font-style="italic">Initial Configuration</fo:inline></fo:inline></fo:basic-link>. |
| The broker is fully configurable via its Web Management Console, for details of this see |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>. |
| </fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Starting-Stopping-Windows"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Starting/Stopping the broker on Windows</fo:marker><fo:block font-size="20.735999999999997pt">3.2. Starting/Stopping the broker on Windows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Firstly change to the installation directory used during the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows"><fo:inline>installation</fo:inline></fo:basic-link> |
| and ensure that the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"><fo:inline>QPID_WORK environment variable is set</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now use the <fo:inline font-weight="bold">qpid-server.bat</fo:inline> to start the server</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e245">bin\qpid-server.bat</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Output similar to the following will be seen:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e249">[Broker] BRK-1006 : Using configuration : C:\qpidwork\config.json |
| [Broker] BRK-1001 : Startup : Version: 9.2.0 Build: 1478262 |
| [Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 11.0.13+10-LTS-370 OS : Windows 7 version: 6.1 arch: x86 cores: 4 |
| [Broker] BRK-1011 : Maximum Memory : Heap : 518,979,584 bytes Direct : 1,610,612,736 bytes |
| [Broker] BRK-1002 : Starting : Listening on TCP port 5672 |
| [Broker] MNG-1001 : Web Management Startup |
| [Broker] MNG-1002 : Starting : HTTP : Listening on port 8080 |
| [Broker] MNG-1004 : Web Management Ready |
| [Broker] BRK-1004 : Qpid Broker Ready</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports on |
| which the Broker is listening (for HTTP management and AMQP respectively).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To stop the Broker, use Control-C from the controlling command prompt or |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations"><fo:inline>REST operation broker/shutdown</fo:inline></fo:basic-link>. |
| </fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Starting-Stopping-Unix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Starting/Stopping the broker on Unix</fo:marker><fo:block font-size="20.735999999999997pt">3.3. Starting/Stopping the broker on Unix</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Firstly change to the installation directory used during the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix"><fo:inline>installation</fo:inline></fo:basic-link> |
| and ensure that the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"><fo:inline>QPID_WORK environment variable is set</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now use the <fo:inline font-weight="bold">qpid-server</fo:inline> script to start the server:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e274">bin/qpid-server</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Output similar to the following will be seen:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e278">[Broker] BRK-1006 : Using configuration : /var/qpidwork/config.json |
| [Broker] BRK-1001 : Startup : Version: 9.2.0 Build: exported |
| [Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 11.0.13+10-LTS-370 OS : Mac OS X version: 10.12.6 arch: x86_64 cores: 8 |
| [Broker] BRK-1011 : Maximum Memory : Heap : 518,979,584 bytes Direct : 1,610,612,736 bytes |
| [Broker] BRK-1002 : Starting : Listening on TCP port 5672 |
| [Broker] MNG-1001 : Web Management Startup |
| [Broker] MNG-1002 : Starting : HTTP : Listening on port 8080 |
| [Broker] MNG-1004 : Web Management Ready |
| [Broker] BRK-1004 : Qpid Broker Ready</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports on |
| which the Broker is listening (for HTTP management and AMQP respectively).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To stop the Broker, use Control-C from the controlling shell, use the |
| <fo:inline font-weight="bold">bin/qpid.stop</fo:inline> script, use <fo:inline font-weight="bold">kill -TERM <pid></fo:inline>, or |
| the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations"><fo:inline>REST operation broker/shutdown</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Logging"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Log file</fo:marker><fo:block font-size="20.735999999999997pt">3.4. Log file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker writes a log file to record both details of its normal operation and any exceptional |
| conditions. By default the log file is written within the log subdirectory beneath the work directory |
| - <fo:inline font-family="monospace">$QPID_WORK/log/qpid.log</fo:inline> (UNIX) and |
| <fo:inline font-family="monospace">%QPID_WORK%\log\qpid.log</fo:inline> (Windows).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For details of how to control the logging, see <fo:basic-link internal-destination="Java-Broker-Runtime-Logging"><fo:inline>Section 9.1, “Logging”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-CommandLine"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Using the command line</fo:marker><fo:block font-size="20.735999999999997pt">3.5. Using the command line</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker understands a number of command line options which may be used to customise the configuration.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For additional details about the broker configuration and related command line arguments see |
| <fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:inline>Chapter 5, <fo:inline font-style="italic">Initial Configuration</fo:inline></fo:inline></fo:basic-link>. |
| The broker is fully configurable via its Web Management Console, for details of this see |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To see usage information for all command line options, use the <fo:inline font-family="monospace">--help</fo:inline> option</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e323">bin/qpid-server --help</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e325">usage: Qpid [-cic <path>] [-h] [-icp <path>] [-mm] [-mmhttp <port>] |
| [-mmpass <password>] [-mmqv] [-os] |
| [-prop <name=value>] [-props <path>] [-sp <path>] [-st <type>] [-v] |
| -cic,--create-initial-config <path> create a copy of the |
| initial config file, |
| either to an |
| optionally specified |
| file path, or as |
| initial-config.json |
| in the current |
| directory |
| -h,--help print this message |
| -icp,--initial-config-path <path> set the location of |
| initial JSON config |
| to use when |
| creating/overwriting |
| a broker |
| configuration store |
| -mm,--management-mode start broker in |
| management mode, |
| disabling the AMQP |
| ports |
| -mmhttp,--management-mode-http-port <port> override http |
| management port in |
| management mode |
| -mmpass,--management-mode-password <password> Set the password for |
| the management mode |
| user mm_admin |
| -mmqv,--management-mode-quiesce-virtualhostnodes make virtualhost nodes |
| stay in the quiesced |
| state during |
| management mode. |
| -prop,--config-property <name=value> set a configuration |
| property to use when |
| resolving variables |
| in the broker |
| configuration store, |
| with format |
| "name=value" |
| -props,--system-properties-file <path> set the location of |
| initial properties |
| file to set |
| otherwise unset |
| system properties |
| -sp,--store-path <path> use given |
| configuration store |
| location |
| -st,--store-type <type> use given broker |
| configuration store |
| type |
| -v,--version print the version |
| information and exit |
| </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Concepts</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Concepts</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Concepts"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 4. Concepts</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Overview"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Overview</fo:marker><fo:block font-size="20.735999999999997pt">4.1. Overview</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker comprises a number of entities. This section summaries the purpose of each of |
| the entities and describes the relationships between them. These details are developed further |
| in the sub-sections that follow.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The most important entity is the <fo:inline font-style="italic">Virtualhost</fo:inline>. A virtualhost is an |
| independent container in which messaging is performed. A <fo:inline font-style="italic">virtualhost</fo:inline> exists |
| in a container called a <fo:inline font-style="italic">virtualhost node</fo:inline>. A virtualhost node has exactly |
| one virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An <fo:inline font-style="italic">Exchange</fo:inline> accepts messages from a producer application and routes these |
| to one or more <fo:inline font-style="italic">Queues</fo:inline> according to pre-arranged criteria called |
| <fo:inline font-style="italic">bindings</fo:inline>. Exchange are an AMQP 0-8, 0-9, 0-9-1, 0-10 concept. They exist to |
| produce useful messaging behaviours such as fanout. When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the |
| exchange is the only way ingressing a message into the virtualhost. When using AMQP |
| 1.0, the application may route messages using an exchange (to take advantage of advanced behaviours) |
| or it may publish messages direct to a queue. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Queue</fo:inline>s are named entities that hold/buffer messages for later delivery to |
| consumer applications. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Ports</fo:inline> accept connections for messaging and management. The Broker |
| supports any number of ports. When connecting for messaging, the user specifies a virtualhost |
| name to indicate the virtualhost to which it is to be connected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Authentication Providers</fo:inline> assert the identity of the user as it connects |
| for messaging or management. The Broker supports any number of authentication providers. Each |
| port is associated with exactly one authentication provider. The port uses the authentication |
| provider to assert the identity of the user as new connections are received.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Group Providers</fo:inline> provide mechanisms that provide grouping of users. A |
| Broker supports zero or more group providers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Access Control Provider</fo:inline> allows the abilities of users (or groups of |
| users) to be restrained. A Broker can have zero or one access control providers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Connection Limit Provider</fo:inline> restrains users (or groups of |
| users) at opening new connections on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Keystores</fo:inline> provide a repositories of certificates and are used when the |
| Broker accepts SSL connections. Any number of keystore providers can be defined. Keystores are |
| be associated with Ports defined to accepts SSL.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Truststores</fo:inline> provide a repositories of trust and are used to validate a |
| peer. Any number of truststore provides can be defined. Truststores can be associated with Ports |
| and other entities that form SSL connections.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Remote Replication Nodes</fo:inline> are used when the high availability feature is |
| in use. It is the remote representation of other virtualhost nodes that form part of the same |
| group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Loggers</fo:inline>, at this point in the hierarchy, are responsible for the |
| production of a log for the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">These concepts will be developed over the forthcoming pages. The diagrams below also help |
| put these entities in context of one and other.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e403"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.1. Message Flow through Key Entities</fo:block><fo:block id="d0e406"><fo:external-graphic src="url(concepts/images/Broker-MessageFlow.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e415"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.2. Broker Structure showing major entities</fo:block><fo:block id="d0e418"><fo:external-graphic src="url(concepts/images/Broker-Model.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Broker"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker</fo:marker><fo:block font-size="20.735999999999997pt">4.2. Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Broker</fo:inline> is the outermost entity within the system.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker is backed by storage. This storage is used to record the durable entities that exist beneath it.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Virtualhost-Nodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhost Nodes</fo:marker><fo:block font-size="20.735999999999997pt">4.3. Virtualhost Nodes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">virtualhost node</fo:inline> is a container for the virtualhost. It has exactly |
| one virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">virtualhost node</fo:inline> is backed by storage. This storage is used to record |
| the durable entities that exist beneath the virtualhost node (the virtualhost, queues, exchanges |
| etc).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When HA is in use, it is the virtualhost nodes of many Brokers that come together to form |
| the group. The virtualhost nodes together elect a master. When the high availability feature is |
| in use, the virtualhost node has <fo:basic-link internal-destination="Java-Broker-Concepts-RemoteReplicationNodes"><fo:inline>remote replications nodes</fo:inline></fo:basic-link>. There is a remote replication node corresponding to each |
| remote virtualhost node that form part of the group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">Virtualhost node</fo:inline> also provides an initial configuration for its <fo:inline font-style="italic">virtualhost</fo:inline>. |
| How to specify initial configuration for <fo:inline font-style="italic">virtual host</fo:inline> is described at |
| <fo:basic-link internal-destination="Java-Broker-Virtual-Host-Initial-Configuration"><fo:inline>Section 5.8, “Virtualhost Initial Configuration”</fo:inline></fo:basic-link>. |
| </fo:block></fo:block><fo:block id="Java-Broker-Concepts-RemoteReplicationNodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Remote Replication Nodes</fo:marker><fo:block font-size="20.735999999999997pt">4.4. Remote Replication Nodes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for HA only. A <fo:inline font-style="italic">remote replication node</fo:inline> is a representation of |
| another virtualhost node in the group.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Virtualhosts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhosts</fo:marker><fo:block font-size="20.735999999999997pt">4.5. Virtualhosts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost is a container in which messaging is performed. Virtualhosts are independent; |
| the messaging that goes on within one virtualhost is independent of any messaging that goes on |
| in another virtualhost. For instance, a queue named <fo:inline font-style="italic">foo</fo:inline> defined in one |
| virtualhost is completely independent of a queue named <fo:inline font-style="italic">foo</fo:inline> in another |
| virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost is identified by a name which must be unique broker-wide. Clients use the name |
| to identify the virtualhost to which they wish to connect when they connect.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost exists in a virtualhost node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The virtualhost comprises a number of entities. This section summaries the purpose of |
| each of the entities and describes the relationships between them. These details are developed |
| further in the sub-sections that follow.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Exchanges</fo:inline> is a named entity within the Virtual Host which receives |
| messages from producers and routes them to matching Queues. When using AMQP 0-8, 0-9, 0-9-1, 0-10 |
| the exchange is the only way ingressing a message into the virtualhost. When using AMQP 1.0 |
| producers may route messages via exchanges or direct to queues.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Queues</fo:inline> are named entities that hold messages for delivery to consumer |
| applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Connections</fo:inline> represent a live connection to the virtualhost from a |
| messaging client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">Session</fo:inline> represents a context for the production or consumption of |
| messages. A Connection can have many Sessions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">Consumer</fo:inline> represents a live consumer that is attached to queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Loggers</fo:inline> are responsible for producing logs for this virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The following diagram depicts the Virtualhost model: <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e523"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.3. Virtualhost Model showing major entities</fo:block><fo:block id="d0e526"><fo:external-graphic src="url(concepts/images/VirtualHost-Model.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">virtualhost</fo:inline> is backed by storage which is used to store the |
| messages.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Exchanges</fo:marker><fo:block font-size="20.735999999999997pt">4.6. Exchanges</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An <fo:inline font-style="italic">Exchange</fo:inline> is a named entity within the <fo:inline font-style="italic">Virtualhost</fo:inline> which receives |
| messages from producers and routes them to matching <fo:inline font-style="italic">Queue</fo:inline>s within the <fo:inline font-style="italic">Virtualhost</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into the virtualhost. When using AMQP |
| 1.0, the application may route messages using an exchange (to take advantage of exchange's routing behaviours), or it may route direcly |
| to a queue (if point to point messaging is required). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The server provides a set of exchange types with each exchange type implementing a different routing algorithm. For details of how |
| these exchanges types work see <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types"><fo:inline>Section 4.6.2, “Exchange Types”</fo:inline></fo:basic-link> below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The server predeclares a number of exchange instances with names starting with "<fo:inline font-family="monospace">amq.</fo:inline>". These are defined in |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Predeclared"><fo:inline>Section 4.6.1, “Predeclared Exchanges”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications can make use of the pre-declared exchanges, or they may declare their own. The number of exchanges within a <fo:inline font-style="italic">Virtualhost</fo:inline> is |
| limited only by resource constraints.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The behaviour when an <fo:inline font-style="italic">Exchange</fo:inline> is unable to route a message to any queue is defined in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Predeclared"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Predeclared Exchanges</fo:marker><fo:block font-size="17.28pt">4.6.1. Predeclared Exchanges</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Each <fo:inline font-style="italic">Virtualhost</fo:inline> pre-declares the following exchanges: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e588"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e589"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>amq.direct (an instance of a direct exchange)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e592"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>amq.topic (an instance of a topic exchange)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e595"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>amq.fanout (an instance of a fanout exchange)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e598"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>amq.match (an instance of a headers exchange)</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The conceptual "<fo:inline font-family="monospace">default exchange</fo:inline>" always exists, effectively a special instance of |
| direct exchange which uses the empty string as its name. All queues are automatically bound to it upon their creation |
| using the queue name as the binding key, and unbound upon their deletion. It is not possible to manually add or remove |
| bindings within this exchange.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications may not declare exchanges with names beginning with "<fo:inline font-family="monospace">amq.</fo:inline>". Such names are reserved for system use.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Exchange Types</fo:marker><fo:block font-size="17.28pt">4.6.2. Exchange Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The following Exchange types are supported. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e617"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e618"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Direct</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e621"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Topic</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e624"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Fanout</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e627"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Headers</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| These exchange types are described in the following sub-sections.</fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Direct"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.2.1. Direct</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The direct exchange type routes messages to queues based on an exact match between |
| the routing key of the message, and the binding key used to bind the queue to the exchange. Additional |
| filter rules may be specified using a <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:inline> |
| binding argument specifying a JMS message selector</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This exchange type is often used to implement point to point messaging. When used in this manner, the normal |
| convention is that the binding key matches the name of the queue. It is also possible to use this exchange type |
| for multi-cast, in this case the same binding key is associated with many queues.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e641"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.4. Direct exchange</fo:block><fo:block id="d0e644"><fo:external-graphic src="url(concepts/images/Exchange-Direct.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure above illustrates the operation of direct exchange type. The yellow messages published with the routing key |
| "<fo:inline font-family="monospace">myqueue</fo:inline>" match the binding key corresponding to queue "<fo:inline font-family="monospace">myqueue</fo:inline>" and so are routed there. The red |
| messages published with the routing key "<fo:inline font-family="monospace">foo</fo:inline>" match two bindings in the table so a copy of the message is |
| routed to both the "<fo:inline font-family="monospace">bar1</fo:inline>" and "<fo:inline font-family="monospace">bar2</fo:inline>" queues.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The routing key of the blue message matches no binding keys, so the message is unroutable. It is handled as described |
| in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Topic"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.2.2. Topic</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This exchange type is used to support the classic publish/subscribe paradigm.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The topic exchange is capable of routing messages to queues based on wildcard matches between the routing key and the |
| binding key pattern defined by the queue binding. Routing keys are formed from one or more words, with each word delimited |
| by a full-stop (.). The pattern matching characters are the * and # symbols. The * symbol matches a single word and the # |
| symbol matches zero or more words.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Additional filter rules may be specified using a <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:inline> |
| binding argument specifying a JMS message selector</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following three figures help explain how the topic exchange functions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"/><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e683"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.5. Topic exchange - exact match on topic name</fo:block><fo:block id="d0e686"><fo:external-graphic src="url(concepts/images/Exchange-Topic.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure above illustrates publishing messages with routing key "<fo:inline font-family="monospace">weather</fo:inline>". The exchange routes each |
| message to every bound queue whose binding key matches the routing key.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, this means that each subscriber's queue receives every yellow message.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e696"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.6. Topic exchange - matching on hierarchical topic patterns</fo:block><fo:block id="d0e699"><fo:external-graphic src="url(concepts/images/Exchange-Topic-Hierarchical.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure above illustrates publishing messages with hierarchical routing keys. As before, the exchange routes each |
| message to every bound queue whose binding key matches the routing key but as the binding keys contain wildcards, the |
| wildcard rules described above apply.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, <fo:inline font-family="monospace">sub1</fo:inline> has received the red and green message as "<fo:inline font-family="monospace">news.uk</fo:inline>" and "<fo:inline font-family="monospace">news.de</fo:inline>" |
| match binding key "<fo:inline font-family="monospace">news.#</fo:inline>". The red message has also gone to <fo:inline font-family="monospace">sub2</fo:inline> and <fo:inline font-family="monospace">sub3</fo:inline> as it's routing key |
| is matched exactly by "<fo:inline font-family="monospace">news.uk</fo:inline>" and by "<fo:inline font-family="monospace">*.uk</fo:inline>".</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The routing key of the yellow message matches no binding keys, so the message is unroutable. It is handled as described |
| in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e734"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.7. Topic exchange - matching on JMS message selector</fo:block><fo:block id="d0e737"><fo:external-graphic src="url(concepts/images/Exchange-Topic-JMSSelector.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure above illustrates messages with properties published with routing key "<fo:inline font-family="monospace">shipping</fo:inline>".</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">As before, the exchange routes each message to every bound queue whose binding key matches the routing key but as a JMS selector |
| argument has been specified, the expression is evaluated against each matching message. Only messages whose message header values or properties |
| match the expression are routed to the queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, <fo:inline font-family="monospace">sub1</fo:inline> has received the yellow and blue message as their property "<fo:inline font-family="monospace">area</fo:inline>" |
| cause expression "<fo:inline font-family="monospace">area in ('Forties', 'Cromarty')</fo:inline>" to evaluate true. Similarly, the yellow message has also gone to |
| <fo:inline font-family="monospace">gale_alert</fo:inline> as its property "<fo:inline font-family="monospace">speed</fo:inline>" causes expression "<fo:inline font-family="monospace">speed > 7 and speed < 10</fo:inline>" |
| to evaluate true.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The properties of purple message cause no expressions to evaluate true, so the message is unroutable. It is handled as described in |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Fanout"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.2.3. Fanout</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The fanout exchange type routes messages to all queues bound to the exchange, regardless of the message's routing key.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Filter rules may be specified using a <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:inline> |
| binding argument specifying a JMS message selector</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e781"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.8. Fanout exchange</fo:block><fo:block id="d0e784"><fo:external-graphic src="url(concepts/images/Exchange-Fanout.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Headers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.2.4. Headers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The headers exchange type routes messages to queues based on header properties within the message. The message is passed to |
| a queue if the header properties of the message satisfy the <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-x-match"><fo:inline> |
| x-match expression</fo:inline></fo:basic-link> specified by the binding arguments with which the queue was bound. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-BindingArguments"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Binding Arguments</fo:marker><fo:block font-size="17.28pt">4.6.3. Binding Arguments</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Binding arguments are used by certain exchange types to further filter messages.</fo:block><fo:block id="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.3.1. JMS Selector</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The binding argument <fo:inline font-family="monospace">x-filter-jms-selector</fo:inline> specifies a JMS selector conditional expression. The expression |
| is written in terms of message header and message property names. If the expression evaluates to true, the message is routed to the queue. |
| This type of binding argument is understood by exchange types direct, topic and fanout.<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline> |
| This is a Qpid specific extension.</fo:block></fo:footnote-body></fo:footnote>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-BindingArguments-x-match"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.6.3.2. x-match</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The binding argument <fo:inline font-family="monospace">x-match</fo:inline> is understood by exchange type headers. It can take two values, dictating how the |
| rest of the name value pairs are treated during matching.</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e820"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e821"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">all</fo:inline> implies that all the other pairs must match the headers property of a message for that message to be routed |
| (i.e. an AND match)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e826"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">any</fo:inline> implies that the message should be routed if any of the fields in the headers property match one of the |
| fields in the arguments table (i.e. an OR match)</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A field in the bind arguments matches a field in the message if either the field in the bind arguments has no value and a field of the |
| same name is present in the message headers or if the field in the bind arguments has a value and a field of the same name exists in the |
| message headers and has that same value.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Unrouteable Messages</fo:marker><fo:block font-size="17.28pt">4.6.4. Unrouteable Messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If an exchange is unable to route a message to any queues, the Broker will: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e838"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e839"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If using the AMQP 1.0 protocol, and an alternate binding has been set on the exchange, the message is routed to the alternate. |
| If the message is still unroutable after considering the alternate binding, the message is discarded unless the sending link has requested the |
| <fo:inline font-family="monospace">REJECT_UNROUTABLE</fo:inline> target capability, or the Exchange has its <fo:inline font-family="monospace">unroutableMessageBehaviour</fo:inline> attribute set to |
| <fo:inline font-family="monospace">REJECT</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e851"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If using the AMQP 0-10 protocol, and an alternate binding has been set on the exchange, the message is routed to the alternate. |
| If the message is still unroutable after considering the alternate binding,the message is discarded.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e854"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If using AMQP protocols 0-8..0-9-1, and the publisher set the mandatory flag and the<fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route"><fo:inline> |
| close when no route</fo:inline></fo:basic-link> feature did not close the connection, the message is returned to the Producer.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e860"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Otherwise, the message is discarded.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Queues</fo:marker><fo:block font-size="20.735999999999997pt">4.7. Queues</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Queue</fo:inline>s are named entities within a <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhosts"><fo:inline>Virtualhost</fo:inline></fo:basic-link> that |
| hold/buffer messages for later delivery to consumer applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages arrive on queues either from <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges"><fo:inline>Exchanges</fo:inline></fo:basic-link>, or when |
| using the AMQP 1.0 protocol, the producing application can direct messages straight to the queue. For |
| AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into a queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Consumers subscribe to a queue in order to receive messages from it.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports different queue types, each with different delivery semantics. Queues also have a range of other |
| features such as the ability to group messages together for delivery to a single consumer. These additional features |
| are described below too.</fo:block><fo:block id="Java-Broker-Concepts-Queues-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">4.7.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports four different queue types, each with different delivery semantics.<fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e889"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e890"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Standard"><fo:inline>Standard</fo:inline></fo:basic-link> - a simple First-In-First-Out (FIFO) queue</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e895"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Priority"><fo:inline>Priority</fo:inline></fo:basic-link> - delivery order depends on the priority of each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e900"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Sorted"><fo:inline>Sorted</fo:inline></fo:basic-link> - |
| delivery order depends on the value of the sorting key property in each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e905"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-LVQ"><fo:inline>Last Value |
| Queue</fo:inline></fo:basic-link> - also known as an LVQ, retains only the last (newest) message received |
| with a given LVQ key value</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-Standard"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.1.1. Standard</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A simple First-In-First-Out (FIFO) queue</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-Priority"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.1.2. Priority</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In a priority queue, messages on the queue are delivered in an order determined by the |
| <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority())"><fo:inline>JMS priority message |
| header</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority()</fo:basic-link>]</fo:inline> within the message. By default Qpid supports the 10 priority levels |
| mandated by JMS, with priority value 0 as the lowest priority and 9 as the highest. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to reduce the effective number of priorities if desired.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JMS defines the <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY)"><fo:inline> |
| default message priority</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY)">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY</fo:basic-link>]</fo:inline> as 4. Messages sent without a specified priority use this |
| default. </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-Sorted"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.1.3. Sorted Queues</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Sorted queues allow the message delivery order to be determined by value of an arbitrary |
| <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty())"><fo:inline>JMS message |
| property</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty()</fo:basic-link>]</fo:inline>. Sort order is alpha-numeric and the property value must have a type |
| java.lang.String.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages sent to a sorted queue without the specified JMS message property will be |
| put at the head of the queue.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-LVQ"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.1.4. Last Value Queues (LVQ)</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">LVQs (or conflation queues) are special queues that automatically discard any message |
| when a newer message arrives with the same key value. The key is specified by arbitrary |
| <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames())"><fo:inline>JMS message |
| property</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames()</fo:basic-link>]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An example of an LVQ might be where a queue represents prices on a stock exchange: when |
| you first consume from the queue you get the latest quote for each stock, and then as new |
| prices come in you are sent only these updates. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Like other queues, LVQs can either be browsed or consumed from. When browsing an |
| individual subscriber does not remove the message from the queue when receiving it. This |
| allows for many subscriptions to browse the same LVQ (i.e. you do not need to create and |
| bind a separate LVQ for each subscriber who wishes to receive the contents of the |
| LVQ).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages sent to an LVQ without the specified property will be delivered as normal and |
| will never be "replaced".</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Message-Grouping"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Messaging Grouping</fo:marker><fo:block font-size="17.28pt">4.7.2. Messaging Grouping</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker allows messaging applications to classify a set of related messages as |
| belonging to a group. This allows a message producer to indicate to the consumer that a group |
| of messages should be considered a single logical operation with respect to the application. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker can use this group identification to enforce policies controlling how messages |
| from a given group can be distributed to consumers. For instance, the broker can be configured |
| to guarantee all the messages from a particular group are processed in order across multiple |
| consumers. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> For example, assume we have a shopping application that manages items in a virtual |
| shopping cart. A user may add an item to their shopping cart, then change their mind and |
| remove it. If the application sends an <fo:inline font-style="italic">add</fo:inline> message to the broker, |
| immediately followed by a <fo:inline font-style="italic">remove</fo:inline> message, they will be queued in the |
| proper order - <fo:inline font-style="italic">add</fo:inline>, followed by <fo:inline font-style="italic">remove</fo:inline>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> However, if there are multiple consumers, it is possible that once a consumer acquires |
| the <fo:inline font-style="italic">add</fo:inline> message, a different consumer may acquire the |
| <fo:inline font-style="italic">remove</fo:inline> message. This allows both messages to be processed in parallel, |
| which could result in a "race" where the <fo:inline font-style="italic">remove</fo:inline> operation is incorrectly |
| performed before the <fo:inline font-style="italic">add</fo:inline> operation. </fo:block><fo:block id="Java-Broker-Concepts-Queues-GroupingMessages"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.2.1. Grouping Messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to group messages, JMS applications can set the JMS standard header |
| <fo:inline font-family="monospace">JMSXGroupId</fo:inline> to specify the <fo:inline font-style="italic">group identifier</fo:inline> |
| when publishing messages. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternatively, the application may designate a particular message header |
| as containing a message's <fo:inline font-style="italic">group identifier</fo:inline>. The group identifier stored |
| in that header field would be a string value set by the message producer. Messages from the |
| same group would have the same group identifier value. The key that identifies the header |
| must also be known to the message consumers. This allows the consumers to determine a |
| message's assigned group. |
| </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-BrokerRole"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.2.2. The Role of the Broker in Message Grouping </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker will apply the following processing on each grouped message: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1010"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1011"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Enqueue a received message on the destination queue.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1014"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Determine the message's group by examining the message's group identifier |
| header.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1017"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Enforce <fo:inline font-style="italic">consumption ordering</fo:inline> among messages belonging to the |
| same group. <fo:inline font-style="italic">Consumption ordering</fo:inline> means one of two things |
| depending on how the queue has been configured. </fo:block><fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1026"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1027"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> In default mode, a group gets assigned to a single consumer for the lifetime |
| of that consumer, and the broker will pass all subsequent messages in the group to |
| that consumer. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1030"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>In 'shared groups' mode (which gives the same behaviour as the Qpid C++ |
| Broker) the broker enforces a looser guarantee, namely that all the |
| <fo:inline font-style="italic">currently unacknowledged messages</fo:inline> in a group are sent to |
| the same consumer, but the consumer used may change over time even if the |
| consumers do not. This means that only one consumer can be processing messages |
| from a particular group at any given time, however if the consumer acknowledges |
| all of its acquired messages then the broker <fo:inline font-style="italic">may</fo:inline> pass the |
| next pending message in that group to a different consumer. </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The absence of a value in the designated group header field of a message is treated as |
| follows: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1042"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1043"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> In default mode, failure for a message to specify a group is treated as a desire |
| for the message not to be grouped at all. Such messages will be distributed to any |
| available consumer, without the ordering guarantees imposed by grouping. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1046"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> In 'shared groups' mode (which gives the same behaviour as the Qpid C++ Broker) |
| the broker assigns messages without a group value to a 'default group'. Therefore, all |
| such "unidentified" messages are considered by the broker as part of the same group, |
| which will handled like any other group. The name of this default group is |
| "qpid.no-group", although it can be customised as detailed below. </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Note that message grouping has no effect on queue browsers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Note well that distinct message groups would not block each other from delivery. For |
| example, assume a queue contains messages from two different message groups - say group "A" |
| and group "B" - and they are enqueued such that "A"'s messages are in front of "B". If the |
| first message of group "A" is in the process of being consumed by a client, then the |
| remaining "A" messages are blocked, but the messages of the "B" group are available for |
| consumption by other consumers - even though it is "behind" group "A" in the queue. </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Forcing all consumers to be non-destructive</fo:marker><fo:block font-size="17.28pt">4.7.3. Forcing all consumers to be non-destructive</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a consumer attaches to a queue, the normal behaviour is that messages are |
| sent to that consumer are acquired exclusively by that consumer, and when the consumer |
| acknowledges them, the messages are removed from the queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another common pattern is to have queue "browsers" which send all messages to the |
| browser, but do not prevent other consumers from receiving the messages, and do not |
| remove them from the queue when the browser is done with them. Such a browser is an |
| instance of a "non-destructive" consumer.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If every consumer on a queue is non destructive then we can obtain some interesting |
| behaviours. In the case of a <fo:inline>LVQ |
| </fo:inline> then the queue will always contain the most up to date value for every key. For |
| a standard queue, if every consumer is non-destructive then we have something that |
| behaves like a topic (every consumer receives every message) except that instead of |
| only seeing messages that arrive after the point at which the consumer is created, all |
| messages which have not been removed due to TTL expiry (or, in the case of LVQs, |
| overwirtten by newer values for the same key).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue can be created to enforce all consumers are non-destructive.</fo:block><fo:block id="d0e1068"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.3.1. Bounding size using min/max TTL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For queues other than LVQs, having only non-destructive consumers could mean that |
| messages would never get deleted, leaving the queue to grow unconstrainedly. To |
| prevent this you can use the ability to set the maximum TTL of the queue. To ensure |
| all messages have the same TTL you could also set the minimum TTL to the same value. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Minimum/Maximum TTL for a queue can be set though the HTTP Management UI, using the |
| REST API. The attribute names are <fo:inline font-family="monospace">minimumMessageTtl</fo:inline> and |
| <fo:inline font-family="monospace">maximumMessageTtl</fo:inline> and the TTL value is given in milliseconds.</fo:block></fo:block><fo:block id="d0e1081"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.3.2. Choosing to receive messages based on arrival time</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue with no destructive consumers will retain all messages until they expire |
| due to TTL. It may be the case that a consumer only wishes to receive messages |
| that have been sent in the last 60 minutes, and any new messages that arrive, or |
| alternatively it may wish only to receive newly arriving messages and not any that |
| are already in the queue. This can be achieved by using a filter on the arrival |
| time.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A special parameter <fo:inline font-family="monospace">x-qpid-replay-period</fo:inline> can be used in the |
| consumer declaration to control the messages the consumer wishes to receive. The |
| value of <fo:inline font-family="monospace">x-qpid-replay-period</fo:inline> is the time, in seconds, for which |
| the consumer wishes to see messages. A replay period of 0 indicates only newly |
| arriving messages should be sent. A replay period of 3600 indicates that only |
| messages sent in the last hour - along with any newly arriving messages - should be |
| sent.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using the Qpid JMS AMQP 0-x, the consumer declaration can be hinted using the |
| address.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1096"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 4.1. Setting the replay period using a Qpid JMS AMQP 0-x address</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Syntax</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Example</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>Addressing</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>myqueue : { link : { x-subscribe: { arguments : { x-qpid-replay-period : '3600' } } } }</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>Binding URL</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>direct://amq.direct/myqueue/myqueue?x-qpid-replay-period='3600'</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="d0e1119"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.3.3. Setting a default filter</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A common case might be that the desired default behaviour is that newly attached consumers |
| see only newly arriving messages (i.e. standard topic-like behaviour) but other consumers |
| may wish to start their message stream from some point in the past. This can be achieved by |
| setting a default filter on the queue so that consumers which do not explicitly set a replay |
| period get a default (in this case the desired default would be 0).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The default filter set for a queue can be set via the REST API using the attribute named |
| <fo:inline font-family="monospace">defaultFilters</fo:inline>. This value is a map from filter name to type and arguments. |
| To set the default behaviour for the queue to be that consumers only receive newly arrived |
| messages, then you should set this attribute to the value:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1129"> |
| { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "0" ] } } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If the desired default behaviour is that each consumer should see all messages arriving in |
| the last minute, as well as all new messages then the value would need to be:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1133"> |
| { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "60" ] } } |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-HoldingEntries"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Holding messages on a Queue</fo:marker><fo:block font-size="17.28pt">4.7.4. Holding messages on a Queue</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Sometimes it is required that while a message has been placed on a queue, it is not released to consumers |
| until some external condition is met. </fo:block><fo:block id="d0e1140"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">4.7.4.1. Hold until valid</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Currently Queues support the "holding" of messages until a (per-message) provided point in time. |
| By default this support is not enabled (since it requires extra work to be performed against every |
| message entering the queue. To enable support, the attribute <fo:inline font-family="monospace">holdOnPublishEnabled</fo:inline> |
| must evaluate to true for the Queue. When enabled messages on the queue will be checked for the header |
| (for AMQP 0-8, 0-9, 0-9-1 and 0-10 messages) or message annotation (for AMQP 1.0 messages) |
| <fo:inline font-family="monospace">x-qpid-not-valid-before</fo:inline>. If this header/annotation exists and contains a numeric value, |
| it will be treated as a point in time given in milliseconds since the UNIX epoch. The message will not |
| be released from the Queue to consumers until this time has been reached. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Controlling Queue Size</fo:marker><fo:block font-size="17.28pt">4.7.5. Controlling Queue Size</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">Overflow Policy</fo:inline> |
| can be configured on an individual <fo:inline font-style="italic">Queue</fo:inline> to limit the queue size. The size |
| can be expressed in terms of a <fo:inline font-style="italic">maximum number of bytes</fo:inline> and/or |
| <fo:inline font-style="italic">maximum number of messages</fo:inline>. |
| The <fo:inline font-style="italic">Overflow Policy</fo:inline> defines the Queue behaviour when any of the limits is reached. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The following <fo:inline font-style="italic">Overflow Policies</fo:inline> are supported: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1176"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1177"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">None</fo:inline> |
| - Queue is unbounded and the capacity limits are not applied. |
| This is a default policy applied implicitly when policy is not set explicitly. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1183"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">Ring</fo:inline> |
| - If a newly arriving message takes the queue over a limit, message(s) are |
| deleted from the queue until the queue falls within its limit again. When deleting |
| messages, the oldest messages are deleted first. For a |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Priority"><fo:inline>Priority Queue</fo:inline></fo:basic-link> |
| the oldest messages with lowest priorities are removed. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1192"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">Producer Flow Control</fo:inline> |
| -The producing sessions |
| are blocked until queue depth falls below the <fo:inline font-style="italic">resume threshold</fo:inline> set as a |
| context variable <fo:inline font-style="italic">${queue.queueFlowResumeLimit}</fo:inline> |
| (specifying the percentage from the limit values. Default is 80%). |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1204"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">Flow to Disk</fo:inline> |
| -If the queue breaches a limit, newly arriving messages are written to disk and the in-memory |
| representation of the message is minimised. The Broker will transparently retrieve messages |
| from disk as they are required by a consumer or management. The flow to disk policy does not |
| actually restrict the overall size of the queue, merely the space occupied in memory. |
| The Broker's other <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>Flow to Disk feature</fo:inline></fo:basic-link> |
| operates completely independent of this Queue Overflow Policy. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1213"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">Reject</fo:inline> |
| -A newly arriving message is rejected when queue limit is breached. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A negative value for <fo:inline font-style="italic">maximum number of messages</fo:inline> or |
| <fo:inline font-style="italic">maximum number of bytes</fo:inline> disables the limit. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Broker issues Operational log messages when the queue sizes are breached. These are documented |
| at <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"><fo:inline>Table C.6, “Queue Log Messages”</fo:inline></fo:basic-link>. |
| </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-SetLowPrefetch"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Using low pre-fetch with special queue types</fo:marker><fo:block font-size="17.28pt">4.7.6. Using low pre-fetch with special queue types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messaging clients may buffered messages for performance reasons. In Qpid, this is commonly known as |
| <fo:inline font-style="italic">pre-fetch</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using some of the messaging features described on this section, using prefetch can give |
| unexpected behaviour. Once the broker has sent a message to the client its delivery order is then fixed, |
| regardless of the special behaviour of the queue. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, if using a priority queue and a prefetch of 100, and 100 messages arrive with |
| priority 2, the broker will send these messages to the client. If then a new message arrives |
| with priority 1, the broker cannot leap frog messages of lower priority. The priority 1 will |
| be delivered at the front of the next batch of messages to be sent to the client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Using pre-fetch of 1 will give exact queue-type semantics as perceived by the |
| client however, this brings a performance cost. You could test with a slightly higher |
| pre-fetch to trade-off between throughput and exact semantics.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See the messaging client documentation for details of how to configure prefetch.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Ports"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Ports</fo:marker><fo:block font-size="20.735999999999997pt">4.8. Ports</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Broker supports configuration of <fo:inline font-style="italic">Ports</fo:inline> to specify the particular |
| AMQP messaging and HTTP management connectivity it offers for use. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Each Port is configured with the particular <fo:inline font-style="italic">Protocols</fo:inline> and |
| <fo:inline font-style="italic">Transports</fo:inline> it supports, as well as the <fo:inline font-style="italic">Authentication |
| Provider</fo:inline> to be used to authenticate connections. Where SSL is in use, the |
| <fo:inline font-style="italic">Port</fo:inline> configuration also defines which <fo:inline font-style="italic">Keystore</fo:inline> |
| to use and (where supported) which <fo:inline font-style="italic">TrustStore(s)</fo:inline> and whether Client |
| Certificates should be requested/required. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Different <fo:inline font-style="italic">Ports</fo:inline> can support different protocols, and many |
| <fo:inline font-style="italic">Ports</fo:inline> can be configured on the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The following AMQP protocols are currently supported by the Broker: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1286"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1287"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">AMQP 0-8</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1291"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">AMQP 0-9</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1295"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">AMQP 0-9-1</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1299"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">AMQP 0-10</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1303"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">AMQP 1.0</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Additionally, HTTP ports can be configured for use by the associated management |
| plugin. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This diagram explains how Ports, <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link> |
| and an Access Control Provider work together to allow an application to form a connection to |
| a Virtualhost.<fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1315"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 4.9. Control flow during Authentication</fo:block><fo:block id="d0e1318"><fo:external-graphic src="url(concepts/images/Broker-PortAuthFlow.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Authentication-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Authentication Providers</fo:marker><fo:block font-size="20.735999999999997pt">4.9. Authentication Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">Authentication Providers</fo:inline> are used by <fo:inline font-style="italic">Ports</fo:inline> to authenticate connections. |
| Many <fo:inline font-style="italic">Authentication Providers</fo:inline> can be configured on the Broker at the same time, from which |
| each <fo:inline font-style="italic">Port</fo:inline> can be assigned one. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Some Authentication Providers offer facilities for creation and deletion of users.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Other-Services"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Other Services</fo:marker><fo:block font-size="20.735999999999997pt">4.10. Other Services</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Broker can also have <fo:inline font-style="italic">Access Control Providers</fo:inline>, |
| <fo:inline font-style="italic">Connection Limit Providers</fo:inline>, <fo:inline font-style="italic">Group Providers</fo:inline>, |
| <fo:inline font-style="italic">Keystores</fo:inline>, <fo:inline font-style="italic">Trustores</fo:inline> and [Management] <fo:inline font-style="italic">Plugins</fo:inline> configured. |
| </fo:block><fo:block id="Java-Broker-Concepts-Access-Control-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Access Control Providers</fo:marker><fo:block font-size="17.28pt">4.10.1. Access Control Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Access Control Providers</fo:inline> are used to authorize various operations relating to Broker objects.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Access Control Provider configuration and management details are covered in <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>Section 8.3, “Access Control Providers”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Connection-Limit-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Connection Limit Providers</fo:marker><fo:block font-size="17.28pt">4.10.2. Connection Limit Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Connection Limit Providers</fo:inline> are used to limit the amount of connections that |
| user could open on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection Limit Providers configuration and management details are covered in |
| <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>Section 8.4, “Connection Limit Providers”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Group-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Group Providers</fo:marker><fo:block font-size="17.28pt">4.10.3. Group Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Group Providers</fo:inline> are used to aggregate authenticated user principals into groups |
| which can be then be used in Access Control rules applicable to the whole group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Group Provider configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Section 8.2, “Group Providers”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Keystores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Keystores</fo:marker><fo:block font-size="17.28pt">4.10.4. Keystores</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Keystores</fo:inline> are used to configure SSL private and public keys and certificates |
| for the SSL transports on Ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Keystore configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores"><fo:inline>Section 7.12, “Keystores”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Truststores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Truststores</fo:marker><fo:block font-size="17.28pt">4.10.5. Truststores</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Truststores</fo:inline> are used to configure SSL certificates for trusting Client Certificate |
| on SSL ports or making SSL connections to other external services like LDAP, etc.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Truststore configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores"><fo:inline>Section 7.13, “Truststores”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Loggers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Loggers</fo:marker><fo:block font-size="17.28pt">4.10.6. Loggers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Loggers</fo:inline> are responsible for producing a log of events from either the Broker as a whole, or |
| an individual Virtualhost. These are described in <fo:basic-link internal-destination="Java-Broker-Runtime-Logging"><fo:inline>Section 9.1, “Logging”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Initial Configuration</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Initial Configuration</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Initial-Configuration"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 5. Initial Configuration</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="20.735999999999997pt">5.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes how to perform initial configuration on the command line. Once |
| the Broker is started, subsequent management is performed using the <fo:basic-link internal-destination="Java-Broker-Management-Channel"><fo:inline>Management interfaces</fo:inline></fo:basic-link></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The configuration for each component is stored as an entry in the broker |
| configuration store, currently implemented as a JSON file which persists changes to |
| disk, BDB or Derby database or an in-memory store which does not. The following |
| components configuration is stored there: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1445"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1446"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Broker</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1449"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Virtual Host Nodes</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1452"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Loggers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1455"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Ports</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1458"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Authentication Providers (optionally with Users for managing users Authentication Providers)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1461"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Access Control Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1464"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>User Connection Limit Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1467"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Group Providers (optionally with Groups and GroupMembers for managing groups Group Providers)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1470"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Key stores</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1473"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Trust stores</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1476"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Plugins</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Broker startup involves two configuration related items, the 'Initial Configuration' |
| and the Configuration Store. When the broker is started, if a Configuration Store does |
| not exist at the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location"><fo:inline>store location</fo:inline></fo:basic-link> then one will be initialised with the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial |
| Configuration'</fo:inline></fo:basic-link>. Subsequent broker restarts will use the existing configuration |
| store and ignore the contents of the 'Initial Configuration'. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Location"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuration Store Location</fo:marker><fo:block font-size="20.735999999999997pt">5.2. Configuration Store Location</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker will default to using <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:inline>${qpid.work_dir}</fo:inline></fo:basic-link>/config.json as the path for its configuration store unless |
| otherwise instructed. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-sp</fo:inline> (or |
| <fo:inline font-style="italic">--store-path</fo:inline>) can optionally be used to specify a different |
| relative or absolute path to use for the broker configuration store: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1504"> |
| $ ./qpid-server -sp ./my-broker-configuration.json |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If no configuration store exists at the specified/defaulted location when the broker |
| starts then one will be initialised using the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial |
| Configuration'</fo:inline></fo:basic-link>. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">'Initial Configuration' Location</fo:marker><fo:block font-size="20.735999999999997pt">5.3. 'Initial Configuration' Location</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The 'Initial Configuration' JSON file is used when initialising new broker |
| configuration stores. The broker will default to using an internal file within its jar |
| unless otherwise instructed. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-icp </fo:inline> (or |
| <fo:inline font-style="italic">--initial-config-path</fo:inline>) can be used to override the brokers |
| internal file and supply a <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Create-Initial-Config"><fo:inline>user-created |
| one</fo:inline></fo:basic-link>:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1527"> |
| $ ./qpid-server -icp ./my-initial-configuration.json |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If a Configuration Store already exists at the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location"><fo:inline>store location</fo:inline></fo:basic-link> then the |
| current 'Initial Configuration' will be ignored. |
| </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Create-Initial-Config"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Creating an 'Initial Configuration' JSON File</fo:marker><fo:block font-size="20.735999999999997pt">5.4. Creating an 'Initial Configuration' JSON File</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> It is possible to have the broker output its default internal 'Initial Configuration' |
| file to disk using the command line argument <fo:inline font-style="italic">-cic</fo:inline> (or |
| <fo:inline font-style="italic">--create-initial-config</fo:inline>). If the option is used without |
| providing a path, a file called <fo:inline font-style="italic">initial-config.json</fo:inline> will be created |
| in the current directory, or alternatively the file can be created at a specified |
| location: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1548"> |
| $ ./qpid-server -cic ./initial-config.json |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The 'Initial Configuration' JSON file shares a common format with the brokers JSON |
| Configuration Store implementation, so it is possible to use a Broker's Configuration |
| Store output as an initial configuration. Typically 'Initial Configuration' files would |
| not to contain IDs for the configured entities, so that IDs will be generated when the |
| configuration store is initialised and prevent use of the same IDs across multiple |
| brokers, however it may prove useful to include IDs if using the Memory <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Type"><fo:inline>Configuration Store Type</fo:inline></fo:basic-link>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> It can be useful to use <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:inline>Configuration |
| Properties</fo:inline></fo:basic-link> within 'Initial Configuration' files to allow a degree of |
| customisation with an otherwise fixed file. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> For an example file, see <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example"><fo:inline>Section 5.7, “Example of JSON 'Initial Configuration'”</fo:inline></fo:basic-link> |
| </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Type"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuration Store Type</fo:marker><fo:block font-size="20.735999999999997pt">5.5. Configuration Store Type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> There are currently several implementations of the pluggable Broker Configuration Store: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" id="d0e1569" provisional-distance-between-starts="6em * 0.60+1em" provisional-label-separation="1em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1570"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>JSON</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>the default one which persists content to disk in a JSON file</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1576"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>Memory</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>operates only in-memory and so does not retain changes across broker |
| restarts and always relies on the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial |
| Configuration'</fo:inline></fo:basic-link> to provide the configuration to start the broker with. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1585"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>DERBY</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>stores configuration in embedded derby store</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1591"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>BDB</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>stores configuration in Berkeley DB store</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1597"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>JDBC</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>stores configuration in external RDBMS using JDBC</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-st</fo:inline> (or |
| <fo:inline font-style="italic">--store-type</fo:inline>) can be used to override the default |
| <fo:inline font-style="italic">json</fo:inline>)configuration store type and allow choosing an alternative, |
| such as <fo:inline font-style="italic">Memory</fo:inline>) </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1618"> |
| $ ./qpid-server -st memory |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> This can be useful when running tests, or always wishing to start the broker with the |
| same <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial |
| Configuration'</fo:inline></fo:basic-link> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another example of broker startup with configuration in DERBY network server</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1627"> |
| $ ./qpid-server -st JDBC \ |
| -prop "systemConfig.connectionUrl=jdbc:derby://localhost:1527/path/to/store;create=true" \ |
| -prop "systemConfig.username=test" -prop "systemConfig.password=password" |
| </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Customising Configuration using Configuration Properties</fo:marker><fo:block font-size="20.735999999999997pt">5.6. Customising Configuration using Configuration Properties</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> It is possible for 'Initial Configuration' (and Configuration Store) files to contain |
| ${properties} that can be resolved to String values at startup, allowing a degree of |
| customisation using a fixed file. Configuration Property values can be set either via |
| Java System Properties, or by specifying ConfigurationProperties on the broker command |
| line. If both are defined, System Property values take precedence. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker has the following set of core configuration properties, with the indicated |
| default values if not otherwise configured by the user: <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1636"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 5.1. Base Configuration Properties</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"> Name </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"> Description </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold"> Value </fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> qpid.amqp_port </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> Port number used for the brokers default AMQP messaging port </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> "5672" </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> qpid.http_port </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> Port number used for the brokers default HTTP management port </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> "8080" </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> qpid.home_dir </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> Location of the broker installation directory, which contains |
| the 'lib' directory and the 'etc' directory often used to store |
| files such as group and ACL files. </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> Defaults to the value set into the QPID_HOME system property if |
| it is set, or remains unset otherwise unless configured by the user. |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> qpid.work_dir </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> Location of the broker working directory, which might contain |
| the persistent message store and broker configuration store files. </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> Defaults to the value set into the QPID_WORK system property if |
| it is set, or the 'work' subdirectory of the JVMs current working |
| directory. </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Use of these core properties can be seen in the <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example"><fo:inline>default 'Initial Configuration' example</fo:inline></fo:basic-link>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Configuration Properties can be set on the command line using the |
| <fo:inline font-style="italic">-prop</fo:inline> (or <fo:inline font-style="italic">--configuration-property</fo:inline>) |
| command line argument: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1694"> |
| $ ./qpid-server -prop "qpid.amqp_port=10000" -prop "qpid.http_port=10001" |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> In the example above, property used to set the port number of the default AMQP port |
| is specified with the value 10000, overriding the default value of 5672, and similarly |
| the value 10001 is used to override the default HTTP port number of 8080. When using the |
| 'Initial Configuration' to initialise a new Configuration Store at first broker |
| startup these new values will be used for the port numbers instead. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> NOTE: When running the broker on Windows and starting it via the qpid-server.bat |
| file, the "name=value" argument MUST be quoted. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Example"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Example of JSON 'Initial Configuration'</fo:marker><fo:block font-size="20.735999999999997pt">5.7. Example of JSON 'Initial Configuration'</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> An example of the default 'Initial Configuration' JSON file the broker uses is |
| provided below:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1705"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 5.1. JSON 'Initial configuration' File</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1708"> |
| { |
| "name": "${broker.name}", |
| "modelVersion" : "9.0", |
| "authenticationproviders" : [ { |
| "name" : "plain", |
| "type" : "Plain", |
| "users" : [ { |
| "name" : "guest", |
| "type" : "managed", |
| "password" : "guest" |
| } ] |
| } ], |
| "brokerloggers" : [ { |
| "name" : "logfile", |
| "type" : "File", |
| "fileName" : "${qpid.work_dir}${file.separator}log${file.separator}qpid.log", |
| "brokerloginclusionrules" : [ { |
| "name" : "Root", |
| "type" : "NameAndLevel", |
| "level" : "WARN", |
| "loggerName" : "ROOT" |
| }, { |
| "name" : "Qpid", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "org.apache.qpid.*" |
| }, { |
| "name" : "Operational", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.message.*" |
| }, { |
| "name" : "Statistics", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.statistics.*" |
| } ] |
| }, { |
| "name" : "memory", |
| "type" : "Memory", |
| "brokerloginclusionrules" : [ { |
| "name" : "Root", |
| "type" : "NameAndLevel", |
| "level" : "WARN", |
| "loggerName" : "ROOT" |
| }, { |
| "name" : "Qpid", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "org.apache.qpid.*" |
| }, { |
| "name" : "Operational", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.message.*" |
| }, { |
| "name" : "Statistics", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.statistics.*" |
| } ] |
| } ], |
| "ports" : [ { |
| "name" : "AMQP", |
| "port" : "${qpid.amqp_port}", |
| "authenticationProvider" : "plain", |
| "virtualhostaliases" : [ { |
| "name" : "nameAlias", |
| "type" : "nameAlias" |
| }, { |
| "name" : "defaultAlias", |
| "type" : "defaultAlias" |
| }, { |
| "name" : "hostnameAlias", |
| "type" : "hostnameAlias" |
| } ] |
| }, { |
| "name" : "HTTP", |
| "port" : "${qpid.http_port}", |
| "authenticationProvider" : "plain", |
| "protocols" : [ "HTTP" ] |
| }], |
| "virtualhostnodes" : [ { |
| "name" : "default", |
| "type" : "JSON", |
| "defaultVirtualHostNode" : "true", |
| "virtualHostInitialConfiguration" : "\\${qpid.initial_config_virtualhost_config}" |
| } ], |
| "plugins" : [ { |
| "type" : "MANAGEMENT-HTTP", |
| "name" : "httpManagement" |
| } ] |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the configuration above the following entries are stored: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1712"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1713"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> Authentication Provider of type |
| <fo:inline font-style="italic">PlainPasswordFile</fo:inline> with name "passwordFile". |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1719"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> Two Port entries: "AMQP", "HTTP" |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1722"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> Virtualhost Node called <fo:inline font-style="italic">default</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1728"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>One management plugin: "httpManagement" of type "MANAGEMENT-HTTP".</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1731"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Broker attributes are stored as a root entry.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Virtual-Host-Initial-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhost Initial Configuration</fo:marker><fo:block font-size="20.735999999999997pt">5.8. Virtualhost Initial Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">Virtualhost</fo:inline> initial configuration can be specified in <fo:inline font-style="italic">Virtualhost node</fo:inline> |
| attribute <fo:inline font-style="italic">virtualHostInitialConfiguration</fo:inline>. On first startup, |
| the <fo:inline font-style="italic">virtualhost</fo:inline> is created based on provided initial configuration. |
| You can define there manageable <fo:inline font-style="italic">Virtualhost</fo:inline> attributes and children like exchanges, queues, etc. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The attribute <fo:inline font-family="monospace">virtualHostInitialConfiguration</fo:inline> can have a value of <fo:inline font-style="italic">URL</fo:inline> |
| to an external resource where <fo:inline font-style="italic">virtualhost</fo:inline> initial configuration is provided in json format, or, |
| it can hold a string value with initial configuration in stringified json format. If required, you can |
| specify initial configuration as context variable which can be resolved as <fo:inline font-style="italic">URL</fo:inline> |
| to external resource or stringified json. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1769"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 5.2. Example of virtual host initial configuration provided as stringified JSON</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1772"> |
| ... |
| "virtualhostnodes" : [ { |
| "name" : "default", |
| "type" : "JSON", |
| "defaultVirtualHostNode" : "true", |
| "virtualHostInitialConfiguration" : "{\"type\":\"BDB\",\"nodeAutoCreationPolicies\":[{\"patterns\":\".*\",\"createdOnPublish\":\"true\",\"createdOnConsume\":\"true\",\"nodeType\":\"queue\"}]}" |
| } ] |
| ...</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">After creation of <fo:inline font-style="italic">virtualhost</fo:inline> the value of |
| <fo:inline font-family="monospace">virtualHostInitialConfiguration</fo:inline> is set to an empty string.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Management Channels</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Management Channels</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Management-Channel"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 6. Management Channels</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker can be managed over a number of different channels.</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1788"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1789"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>HTTP - The primary channel for management. The HTTP interface comprises a Web |
| Console and a REST API.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1792"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>AMQP - The AMQP protocols 0-8..0-10 allow for some management of Exchanges, Queue and |
| Bindings. This will be superseded by AMQP 1.0 Management. It is suggested that new users |
| favour the Management facilities provided by the Web Console/REST API.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Java-Broker-Management-Channel-HTTP"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">HTTP Management</fo:marker><fo:block font-size="20.735999999999997pt">6.1. HTTP Management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-HTTP-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="17.28pt">6.1.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The HTTP Management plugin provides a HTTP based API for monitoring and control of the |
| Broker. The plugin actually provides two interfaces:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1805"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1806"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management |
| Console</fo:inline></fo:basic-link> - rich web based interface for the management of the |
| Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1811"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link> - |
| REST API providing complete programmatic management of the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Web Management Console itself uses the REST API, so every function you can perform |
| through the Web Management Console can be also be scripted and integrated into other |
| systems. This provides a simple integration point allowing the Broker to monitored and |
| controlled from systems such as Naoios or BMC Control-M.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-HTTP-DefaultConfiguration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Default Configuration</fo:marker><fo:block font-size="17.28pt">6.1.2. Default Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default, the Broker is shipped with HTTP enabled running port 8080. The HTTP plugin |
| is configured to require SASL authentication. The port is not SSL protected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The settings can be changed by configuring the HTTP plugin and/or the port configured |
| to serve HTTP.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Web Management Console</fo:marker><fo:block font-size="20.735999999999997pt">6.2. Web Management Console</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Web Management Console provides a simple and intuitive interface for the Management |
| and Control of the Broker. From here, all aspects of the Broker can be controlled, |
| including: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1832"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1833"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>add, remove and monitor queues</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1836"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>inspect, move, copy or delete messages</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1839"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>add, remove and monitor virtualhosts</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1842"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>configure and control high availability</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The remainder of the section provides an introduction to the web management console and |
| its use.</fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Accessing"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Accessing the Console</fo:marker><fo:block font-size="17.28pt">6.2.1. Accessing the Console</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Web Management Console is provided by the HTTP Management Plugin. Providing the |
| HTTP Management Plugin is in its default configuration, the Web Management Console can |
| be accessed by pointing a browser at the following URL:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-family="monospace">http://myhost.mydomain.com:8080</fo:inline> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Console will prompt you to login using a username and password.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1860"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.1. Web Management Console - Authentication</fo:block><fo:block id="d0e1863"><fo:external-graphic src="url(management/channels/images/Management-Web-Auth.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Orientation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Orientation</fo:marker><fo:block font-size="17.28pt">6.2.2. Orientation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">After you have logged on you will see a screen similar to the following. The elements |
| of the screen are now explained.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1874"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.2. Web Management Orientation - Console</fo:block><fo:block id="d0e1877"><fo:external-graphic src="url(management/channels/images/Management-Web-Console.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1885"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1886"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">A</fo:inline> - Hierarchy view. Expandable/collapsible view |
| showing all entities within the Broker. Double click on an entity name to |
| cause its tab to be opened. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1891"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">B</fo:inline> - Tab. Shows the details of an entity including its |
| attributes and its child entities. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1896"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">C</fo:inline> - Occluded tab. Click tab name to bring the tab to |
| the front.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1901"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">D</fo:inline> - Auto restore check box. Checked tabs will be |
| automatically restored on subsequent login.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1906"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">E</fo:inline> - Close. Click to close the tab.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1911"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">F</fo:inline> - User Menu. Access to Preferences, Logout and |
| Help.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Orientation-Tab"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.3. Web Management Orientation - Tab</fo:block><fo:block id="d0e1920"><fo:external-graphic src="url(management/channels/images/Management-Web-Tab.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The elements of a tab are now explained: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1928"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1929"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">1</fo:inline> - Attribute Panel. Shows the attributes of the |
| entity. Click the panel title bar opens/closes the panel.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1934"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">2</fo:inline> - Child Panels. Panels containing a table listing |
| the children of the entity. Click the panel title bar opens/closes the |
| panel.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1939"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">3</fo:inline> - Child Row. Row summarizing a child entity. Double |
| click to open the child tab.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1944"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">4</fo:inline> - Child Operations. Buttons to add a new child or |
| perform operations on existing children.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Entities"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Managing Entities</fo:marker><fo:block font-size="17.28pt">6.2.3. Managing Entities</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All the Entities of the Broker of can be managed through the Web Console.</fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.2.3.1. Adding Entities</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To <fo:inline font-style="italic">add</fo:inline> a new entity, click the <fo:inline font-family="monospace">Add</fo:inline> button |
| on the Child Panel on the Parent's tab. Clicking the Add button causes an add |
| dialogue to be displayed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Add dialogues allow you to set the attributes of the new child, and set context |
| variables. Most fields on the add dialogue have field level help that give more |
| details about the attribute and any default value (which may be expressed in terms |
| of a context variable) that will take effect if you leave the attribute unset. An |
| example add dialogue is shown in the figure that follows.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.4. Web Management Orientation - Add Dialogue</fo:block><fo:block id="d0e1971"><fo:external-graphic src="url(management/channels/images/Management-Web-Add-Dialogue.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.2.3.2. Editing Entities</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To <fo:inline font-style="italic">edit</fo:inline> an existing entity, click the <fo:inline font-family="monospace">Edit</fo:inline> |
| button on the tab corresponding to the Entity itself. Editing an entity lets you |
| change some of its attributes and modify its context variables. Most fields on the |
| edit dialogue have field level help that give more details about the attribute and |
| any default value. An example edit dialogue is shown in the figure that |
| follows.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.5. Web Management Orientation - Edit Dialogue</fo:block><fo:block id="d0e1991"><fo:external-graphic src="url(management/channels/images/Management-Web-Edit-Dialogue.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Delete"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.2.3.3. Deleting Entities</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To <fo:inline font-style="italic">remove</fo:inline> an existing entity, click the |
| <fo:inline font-family="monospace">Delete</fo:inline> button on the tab corresponding to the Entity itself. |
| For some child types, you can select many children from the parent's type and delete |
| many children at once.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.2.3.4. Context Variables</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All Entities within the Broker have the ability to have <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General"><fo:inline>context |
| variables</fo:inline></fo:basic-link> associated with them.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Most add and edit dialogues have the ability to make context variable assignments. |
| To add/change/remove a context variable, click the Context Variable panel to expand |
| it.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 6.6. Web Management Orientation - Context Variables</fo:block><fo:block id="d0e2021"><fo:external-graphic src="url(management/channels/images/Management-Web-ContextVar.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You will see any context variables already associated with the object, called |
| local context variables in bold, and any inherited from above in normal face.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Since context variables can be defined in terms of other context variables, the |
| display has two value columns: actual and effective. Actual shows the value truely |
| associated with the variable, where as effective shows the resulting value, after |
| variable expansion has taken place.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">+</fo:inline> button allows new variables to be added. The |
| <fo:inline font-family="monospace">-</fo:inline> button removes existing ones.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You change an existing local variables defintion by clicking on the actual value. |
| You can also <fo:inline font-style="italic">provide a local definition</fo:inline> for an inherited value |
| by clicking on the actual value and typing its new value.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">REST API</fo:marker><fo:block font-size="20.735999999999997pt">6.3. REST API</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="17.28pt">6.3.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes the REST API provided by the Apache Qpid Broker-J. The REST API is intended |
| for use by developers who wish to automate the management or monitoring of the Broker. It |
| is also very useful for adhoc monitoring on the command line using tools such as |
| <fo:inline font-family="monospace">curl</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The REST API provides access to all of the Broker's entities using hierarchical paths |
| expressed by the URI. Responses are returned in JSON format.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">GET</fo:inline> method request retrieves information about an object, the |
| <fo:inline font-family="monospace">DELETE</fo:inline> method requests the removal of one, and the <fo:inline font-family="monospace">PUT</fo:inline> |
| or <fo:inline font-family="monospace">POST</fo:inline> methods perform updates or create new objects. The |
| <fo:inline font-family="monospace">POST</fo:inline> method is also used to invoke operations.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The REST API is versioned with the version number embedded within the URI. The general form |
| of the URI is <fo:inline font-family="monospace">/api/<version></fo:inline> where <version> is a dot separated |
| major and minor model version prefixed with "v", for example, "v6.1" (without the quotation marks). |
| For convenience the alias <fo:inline font-family="monospace">latest</fo:inline> (<fo:inline font-family="monospace">/api/latest</fo:inline>) signifies the |
| latest supported version.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are also some ancillary services under URI <fo:inline font-family="monospace">/service</fo:inline> used for |
| authentication and logout.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-APIDocs"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">REST API documentation</fo:marker><fo:block font-size="17.28pt">6.3.2. REST API documentation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">REST API documentation is available on-line from any Broker at location |
| <fo:inline font-family="monospace">/apidocs</fo:inline>. It is also linked from the menu of the Web Management Console. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Authentication"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Authentication</fo:marker><fo:block font-size="17.28pt">6.3.3. Authentication</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Before you can use the REST API, you must authenticate. Authentication decisions are made |
| by the <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>authentication |
| provider</fo:inline></fo:basic-link> associated with HTTP <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>port</fo:inline></fo:basic-link> |
| on which you connect.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You may authenticate using <fo:basic-link external-destination="url(https://www.ietf.org/rfc/rfc4422.txt)"><fo:inline>SASL</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://www.ietf.org/rfc/rfc4422.txt)">https://www.ietf.org/rfc/rfc4422.txt</fo:basic-link>]</fo:inline> |
| (<fo:inline font-family="monospace">/service/sasl</fo:inline>) or <fo:basic-link external-destination="url(https://tools.ietf.org/html/rfc2617)"><fo:inline>HTTP |
| Basic Authentication</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://tools.ietf.org/html/rfc2617)">https://tools.ietf.org/html/rfc2617</fo:basic-link>]</fo:inline>. The latter is convienent when using tools such as |
| <fo:inline font-family="monospace">curl</fo:inline> on the command line. This is illustrated in the examples |
| below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For SASL authentication use a <fo:inline font-family="monospace">GET</fo:inline> request to |
| <fo:inline font-family="monospace">/service/sasl</fo:inline> to get a list of supported SASL mechanisms, and use |
| <fo:inline font-family="monospace">PUT</fo:inline> to the same URL to perform the SASL negotiation.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to end an authenticated session using |
| <fo:inline font-family="monospace">/service/logout</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Create"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configured Object creation</fo:marker><fo:block font-size="17.28pt">6.3.4. Configured Object creation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Methods PUT or POST can be used to create ConfiguredObject.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> ConfiguredObject can be created by submitting PUT request against ConfiguredObject full |
| URI (the one ending with configured object name) or by submitting PUT/POST request against |
| parent URI. The request encoding should be json (application/json) and request body should |
| contain attributes values in json format. On successful completion of operation a response |
| should be returned having response status code set to 201 and response header "Location" set |
| to ConfiguredObject full URI. If object with a such name/id already exist and POST/PUT |
| requests is made against parent URI, an error response should be returned having response code |
| 409 (conflict) and body containing the json with the reason of operation failure. If object |
| with a such name/id already exist and and PUT request is made against ConfiguredObject full |
| URI, then ConfiguredObject update should be performed and http status code 200 should be |
| returned. If ConfiguredObject cannot be created because of validation failure(s) the response |
| should have http status code set 422 (Unprocessible Entity) and body should contain json with |
| the reason of operation failure. On any other failure to create ConfiguredObject the response |
| should have status code set to 400 (Bad Request) and payload should contain a json with error |
| explaining the exact reason of failure. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2147"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.1. Examples of REST calls for Queue creation</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> To create Queue with name "my-queue" on a virtual host with name "vh" (which is |
| contained within virtual host node with name "vhn") either of the following requests should |
| be made: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2152">PUT /api/latest/queue/vhn/vh HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2154">POST /api/latest/queue/vhn/vh HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2156">PUT /api/latest/queue/vhn/vh/my-queue HTTP/1.1</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Response code 201 should be returned on successful queue creation. Response header |
| "Location" should be set to "/api/latest/queue/test/my-queue". If queue with name "my-queue" |
| already exists and either of 2 first requests above were used, an error response with |
| response code 409 (conflict) and body containing json with message that queue exists should |
| be returned. If queue with name "my-queue" exists and last request is used, then Queue |
| update should occur. </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Update"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configured Object update</fo:marker><fo:block font-size="17.28pt">6.3.5. Configured Object update</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Methods PUT or POST can be used to update ConfiguredObject.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> ConfiguredObject can be updated by submitting PUT or POST request against |
| ConfiguredObject full URI (the one ending with configured object name). The request encoding |
| should be json (application/json) and request body should contain a ConfiguredObject json |
| (with all or only modified attributes). On successful completion of operation a response code |
| 200 should be returned. If ConfiguredObject does not exists and PUT method is used, such |
| object should be created (201 response will be returned in this case). If ConfiguredObject |
| does not exists and POST method is used, an error response should be returned having response |
| status code 404 and payload with json explaining the problem. If any error occur on update, a |
| response with response code 400 or 422 or 404 should be sent back to the client containing |
| json body with error details. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2167"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.2. Examples of REST calls for Queue update</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To update Queue with name "my-queue" on a virtual host with name "vh" (contained in |
| virtual host node with name "vhn") either of the following requests can be made:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2172">POST /api/latest/queue/vhn/vh/my-queue HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2174">POST /api/latest/queue/vhn/vh/my-queue HTTP/1.1</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Delete"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configured Object deletion</fo:marker><fo:block font-size="17.28pt">6.3.6. Configured Object deletion</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Method DELETE can be used to delete ConfiguredObject. Alternatively, ConfiguredObject can |
| be deleted with update request having desiredState attribute set to value "DELETED". POST or |
| PUT methods can be used in this case.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On successful completion of operation a response code 200 should be returned.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">With DELETE method object ConfiguredObject in following ways:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e2185"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2186"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>by submitting DELETE request using ConfiguredObject full URI (the one ending with |
| configured object name)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2189"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>by submitting DELETE request using parent URI and providing parameters having the same |
| names as children attributes, for example, id, name, etc. Multiple children can be deleted |
| in a such way. Many "id" parameters can be specified in such requests. Only children with |
| matching attribute values will be deleted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2192"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.3. Examples of REST calls for Queue deletion</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To delete Queue with name "my-queue" on a virtual host with name "vh" (contained in |
| virtual host node with name "vhn") either of the following requests can be made:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2197">DELETE /api/latest/queue/vhn/vh/my-queue HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2199">DELETE /api/latest/queue/vhn/vh?name=my-queue HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2201">DELETE /api/latest/queue/vhn/vh?id=real-queue-id HTTP/1.1</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Get"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Retrieving Configured Object details</fo:marker><fo:block font-size="17.28pt">6.3.7. Retrieving Configured Object details</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Method GET is used to retrieve an object's attributes values and statistics.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To retrieve a single object, use its full URI. For instance, to retrieve a single queue:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2210">GET /api/latest/queue/vhn/vh/my-queue</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To retrieve all objects beneath a parent, pass the parent's URI. For instance, to retrieve |
| all queues beneath the virtualhost called <fo:inline font-family="monospace">vh</fo:inline>. A collection will be returned. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2217">GET /api/latest/queue/vhn/vh</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Request parameters (with the same name as an attribute) are used to filter the returned collection. |
| For instance, to filter those queues of type <fo:inline font-family="monospace">standard</fo:inline>:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2224">GET /api/latest/queue/vhn/vh?type=standard</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Additional parameters supported in GET requests:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" id="d0e2228" provisional-distance-between-starts="23em * 0.60+1em" provisional-label-separation="1em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2229"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>depth</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>To restrict the depth of hierarchy of configured objects to return in |
| response</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2235"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>actuals</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If set to "true" attribute actual values are returned instead of effective</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2241"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>excludeInheritedContext</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If set to "false" the inherited context is included from the object's ancestors. Default is true.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2247"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>oversize</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Sets the maximum length for values of over-sized attributes to trim</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2253"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>extractInitialConfig</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If set to "true", the returned json can be used as initial configuration.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Operations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configured Object operations</fo:marker><fo:block font-size="17.28pt">6.3.8. Configured Object operations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Method POST is used to invoke Configured Objects operations. Some operations support |
| parameters. Pass parameters using a JSON request body containing a map with a map entry for |
| each parameter. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2264"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.4. Example REST call invoking the operation clear queue</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To clear the queue with name "my-queue" on a virtual host with name "vh".</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2269">POST api/latest/queue/vhn/vh/my-queue/clearQueue HTTP/1.1</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Status-Codes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">HTTP status codes returned by REST interfaces</fo:marker><fo:block font-size="17.28pt">6.3.9. HTTP status codes returned by REST interfaces</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2274"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.1. HTTP status codes returned by REST interfaces</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Status code</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">200</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">REST request is successfully completed. This status code can be returned by |
| update, delete and get requests.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">201</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">New configured object is created. It is returned by REST PUT and POST requests |
| for creation of configured objects.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">400</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">REST request cannot be performed due to errors in request. It can be returned |
| from create, update and delete requests. The details of a problem are provided in |
| the response payload in json format.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">401</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request requires user authentication</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">403</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Execution of request is not allowed due to failure to authorize user |
| operation.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">404</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The requested configured object cannot be found. This status code can be |
| returned from POST update requests if configured object does not exist. The reason |
| for the status code is provided in the response payload in json format. </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">409</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request can not be performed because its execution can create conflicts in |
| the broker. This status code can be returned from POST/PUT create requests against |
| parent URI if configured object with requested name or id already exists. The status |
| code 409 can also be returned if removal or update of configured object can violate |
| system integrity. The reason for the status code is provided in the response payload |
| in json format. </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">422</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request can not be performed because provided information either incomplete |
| or invalid. This status code can be returned from create or update requests. The |
| reason for the status code is provided in the response payload in json |
| format.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Examples of REST requests with curl</fo:marker><fo:block font-size="17.28pt">6.3.10. Examples of REST requests with curl</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2378"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.5. Examples of queue creation using curl (authenticating as user admin):</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2381"> |
| #create a durable queue |
| curl --user admin -X PUT -d '{"durable":true}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename> |
| #create a durable priority queue |
| curl --user admin -X PUT -d '{"durable":true,"type":"priority"}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename> |
| </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> NOTE: These curl examples utilise an unsecured HTTP transport. To use the examples it is |
| first necessary enable Basic authentication for HTTP within the HTTP Management Configuration |
| (it is off by default). For details see <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP"><fo:inline>Section 7.17, “HTTP Plugin”</fo:inline></fo:basic-link> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Query API</fo:marker><fo:block font-size="17.28pt">6.3.11. Query API</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.11.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Qpid Broker-J</fo:inline> provides a powerful feature called |
| the <fo:inline font-style="italic">Query API</fo:inline>. This allows the retrieval of the existing configured objects attributes |
| satisfying user-provided queries.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Developers and operators can use this feature to monitor the Broker. |
| For example, using <fo:inline font-style="italic">Query API</fo:inline> one can find all queues with queue depth |
| exceeding some limit or existing connections made from a particular location(s).</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Overview"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.11.2. Query API Overview</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When using the <fo:inline font-style="italic">Query API</fo:inline> one specifies the category of the object |
| to query, a list of attributes to return in the result set, an optional where clause, |
| expressed as a predicate, that determines the filtering criteria, ordering, and |
| limit/offset. The features should be readily recognisable to anyone who has has familiarity |
| with SQL. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Queries associate with either the <fo:inline font-style="italic">broker</fo:inline> as a whole, or an |
| individual <fo:inline font-style="italic">virtualhost</fo:inline>. Queries associated with the Broker |
| can query any object within the Broker. Queries associated with a virtualhost are limited |
| to the objects of the virtualhost itself. For instance a queue query associated |
| with a virtualhost queries only the queues belonging to that virtualhost. On the other |
| hand, a queue query associated with the Broker sees all the queues belonging on the entire |
| Broker. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2425"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.2. Query API URLs</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Query API URL</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/latest/querybroker/<configured object category name></fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/<version>/querybroker/<configured object category name></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query API URL fragment to query the specified object type across the entire broker</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/latest/queryvhost/<virtual host node name>/<virtual host name>/<configured object category name></fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/<version>/queryvhost/<virtual host node name>/<virtual host name>/<configured object category name></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query API URL fragment to query the specified object type for a specific virtualhost</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The QueryAPI accepts <fo:inline font-family="monospace">select</fo:inline>, <fo:inline font-family="monospace">where</fo:inline>, <fo:inline font-family="monospace">orderBy</fo:inline>, |
| <fo:inline font-family="monospace">limit</fo:inline> and <fo:inline font-family="monospace">offset</fo:inline> request parameters. |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2484"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.3. Query API request parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Parameter Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">select</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">select</fo:inline> defines the columns of the result set. It is a |
| comma-separated list of expressions. At its most simple, an expression can be |
| the name of the attribute (e.g. <fo:inline font-family="monospace">queueDepthBytes</fo:inline>), but more complex |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline>expressions</fo:inline></fo:basic-link> are also supported.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Columns within the result set are named. For expressions that are simple attribute |
| names, the column names will follow the attributes themselves. By default, other |
| expressions will have a no name.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Column names can be overridden with an <fo:inline font-family="monospace">AS</fo:inline> |
| clause e.g. <fo:inline font-family="monospace">now() AS currentDate</fo:inline> |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">where</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">where</fo:inline> provides a boolean expression defining the result set filtering.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The syntax of the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline>expression</fo:inline></fo:basic-link> |
| is based on a subset of the SQL92 conditional expression syntax and is similar to selector expressions in JMS e.g. |
| <fo:inline font-family="monospace">queueDepthBytes > 16384 AND name like '%flow_queue'</fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">orderBy</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ordering conditions; the syntax of the |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline> |
| expression |
| </fo:inline></fo:basic-link> |
| is based on a subset of |
| the SQL92 ordering expression syntax. Similar to ordering expressions in SQL, |
| one can specify in ordering expression attributes names, sub-expressions |
| or indexes (starting from 1) of attributes or expressions specified in select. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">limit</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The maximum number of results to provide starting from given offset.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">offset</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An offset in results (default is 0) to provide results from.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2594"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.6. Example of a Query API request to retrieve queue names and depths.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2597">GET api/latest/querybroker/queue?select=name,queueDepthBytes,queueDepthMessages&where=queueDepthBytes>0&orderBy=1 desc,2 desc&offset=0&limit=100 HTTP/1.1</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Results"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.11.3. Query API Results</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Query API</fo:inline> returns a JSON response. The response contains the following: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" id="d0e2607" provisional-distance-between-starts="7em * 0.60+1em" provisional-label-separation="1em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2608"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline><fo:inline font-family="monospace">headers</fo:inline></fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>ordered list of result set column names derived from the <fo:inline font-family="monospace">select</fo:inline> |
| clause. Note that anonymous expressions (that is, those expressed without an |
| <fo:inline font-family="monospace">AS</fo:inline>) will have empty column name.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2621"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline><fo:inline font-family="monospace">results</fo:inline></fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>two dimensional array containing the result-set</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2628"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline><fo:inline font-family="monospace">total</fo:inline></fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The <fo:inline font-style="italic">total</fo:inline> number of results matching the where criteria.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2639"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 6.7. Example of Query API call for queue names and depths.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2642">GET api/latest/querybroker/queue?select=name,queueDepthBytes,queueDepthMessages&where=queueDepthBytes>0&orderBy=1 desc,2 desc&offset=0&limit=100 HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2644"> |
| { |
| "headers" : [ "name", "queueDepthBytes", "queueDepthMessages" ], |
| "results" : [ [ "foo", 312, 26], [ "bar", 300, 24 ] ], |
| "total" : 2 |
| } |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Query API expressions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expressions within the <fo:inline font-family="monospace">select</fo:inline>, <fo:inline font-family="monospace">where</fo:inline> and <fo:inline font-family="monospace">orderBy</fo:inline> |
| clauses can be comprised in the following manner. Expressions can be nested to arbitary depth. Parentheses |
| allow for precedence to be explicitly denoted. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e2660"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2661"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>variable name which can be an attribute name e.g <fo:inline font-family="monospace">queueDepthBytes</fo:inline> or |
| a reference to a parent attribute <fo:inline font-family="monospace">$parent.name</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2669"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>literal e.g. <fo:inline font-family="monospace">3</fo:inline> or <fo:inline font-family="monospace">'foo'</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2677"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>functions - see below e.g. <fo:inline font-family="monospace">now()</fo:inline> or <fo:inline font-family="monospace">to_string(createdDate, '%tm/%td/%ty', 'EST')</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2685"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>arithmetic operations e.g. <fo:inline font-family="monospace">3 * 4</fo:inline> or <fo:inline font-family="monospace">to_string(now()) + name</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following functions are supported: |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2695"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.4. Query API functions</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Function Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Function Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">concat(obj[,obj..])</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">concatenates the given objects into a string</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">now()</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">returns current date and time</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">to_date(object)</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">converts the first parameter, which must be a string. into a date. The |
| string must be in ISO-8601 format e.g. <fo:inline font-family="monospace">1970-01-01T10:00:00Z</fo:inline>.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">date_add(object, duration)</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">adds the given ISO-8601 duration <fo:inline font-family="monospace">duration</fo:inline> e.g. |
| <fo:inline font-family="monospace">P1D</fo:inline> or <fo:inline font-family="monospace">-PT10H</fo:inline> to the date provided by the |
| first parameter.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">to_string(object[, format[, timezone]])</fo:inline></fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Converts given object into a string.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the format argument is present, it must be a Java |
| <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)"><fo:inline>Formatter</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)">http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html</fo:basic-link>]</fo:inline> |
| compliant string e.g. <fo:inline font-family="monospace">%f</fo:inline> or <fo:inline font-family="monospace">%tY-%tm-%td</fo:inline>. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The timezone argument is significant if the object is a Date. If the timezone |
| argument is specified it must be a valid Java timezone name. The date is converted |
| to the specified timezone before being formatted by the<fo:inline font-family="monospace">format</fo:inline>. |
| If the timezone is omitted <fo:inline font-family="monospace">UTC</fo:inline> is assumed. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Query Engine</fo:marker><fo:block font-size="17.28pt">6.3.12. Query Engine</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Broker query engine extends existing functionality of broker query API and allows executing complex SQL-like |
| queries against the broker. It allows using predicates combining AND/OR/NOT logical operations, supports |
| aggregation and grouping as well as numerous numeric, datetime and string functions. |
| Currently, querying from multiple object types (domains) in a single query as well as all types of joins |
| are not supported. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.2. Broker Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Some properties influencing the query output can be specified directly in the request, but there are also global |
| properties, affecting the way query engine works. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2818"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.5. Query Engine Configuration</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Context Property Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.cacheSize</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query cache size</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.maxQueryDepth</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Maximal query depth</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.zoneId</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Timezone ID</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Query-Cache-Size"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Query cache size</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| After query is parsed from the SQL string, it is stored into a cache. When the same query will be fired against |
| the query engine, parsing will be omitted and the query structure will be retrieved from cache. By default, query cache |
| size is 1000. This means, that when 1000 different queries will be fired against the query engine, the next one will |
| override the oldest cache entry. When set to 0 or to negative value, query cache will not be used and each query |
| will be parsed. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Max-Query-Depth"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Maximal query depth</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The longer is the query and the more conditions it contains, the bigger becomes the query depth. To limit query |
| complexity, maximal query depth parameter can be used. By default, maximal query depth is 4096. This should suffice |
| for most queries even complicated ones. If query depth exceeds this limit, following error will |
| be returned: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2875"> |
| { |
| "errorMessage": "Max query depth reached: 4096" |
| } |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Zone-ID"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Zone ID</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Zone ID value should follow the rules described in <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-)"><fo:inline>javadoc</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-)">https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-</fo:basic-link>]</fo:inline>. |
| The default value for zone id is "UTC". |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Request-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.3. Request Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| An authorized request should be sent to the following endpoint: |
| POST http://<hostname>:<port>/api/latest/querybroker/broker |
| SQL query should be supplied in the "sql" field of the JSON body: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2890"> |
| { |
| "sql": "select * from broker" |
| } |
| </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SQL-Query-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">SQL Query Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| SQL keywords, operators and functions are case-insensitive, so are domain names (object types) specified in |
| the <fo:inline font-family="monospace">FROM</fo:inline> clause. Field names specified in the <fo:inline font-family="monospace">SELECT</fo:inline> clause are case-sensitive. |
| Following queries are similar: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2903"> |
| { |
| "sql": "SELECT name FROM BROKER" |
| } |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2905"> |
| { |
| "sql": "SELECT name FROM broker" |
| } |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2907"> |
| { |
| "sql": "select name from broker" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| They will return the same output. |
| When an entity field name is written in wrong case or misspelled, an error will be returned. |
| For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2911"> |
| { |
| "sql": "SELECT NAME FROM BROKER" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| has field <fo:inline font-family="monospace">NAME</fo:inline> written in upper case, which will result in an error: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2918"> |
| { |
| "errorMessage": "Domain 'BROKER' does not contain field 'NAME'" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In this document many SQL queries are split into several lines for better readability, but JSON format does not support |
| multiline string fields. Therefore, even the long SQL queries should be placed in <fo:inline font-family="monospace">sql</fo:inline> field of the JSON body as a |
| single line. |
| Aside from SQL query several configuration parameters can be provided to influence output format: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2927"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.6. Additional Request Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Field Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">dateTimeFormat</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Format of the datetime fields, possible values: LONG, STRING</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">dateTimePattern</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Pattern for datetime fields formatting, e.g. yyyy-MM-dd HH:mm:ss</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimalDigits</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Amount of decimal digits</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">roundingMode</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Rounding mode for arithmetic operations, possible values UP, DOWN, CEILING, FLOOR, |
| HALF_UP, HALF_DOWN, HALF_EVEN, UNNECESSARY |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Datetime Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When datetime format is specified as <fo:inline font-family="monospace">LONG</fo:inline>, datetime fields will be returned as |
| milliseconds from UNIX epoch. So, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2993"> |
| { |
| "sql": "select id, name, createdTime from broker", |
| "dateTimeFormat": "LONG" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2997"> |
| { |
| "results": [ |
| { |
| "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc", |
| "name": "broker", |
| "createdTime": 1645195849272 |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In opposite the query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3001"> |
| { |
| "sql": "select id, name, createdTime from broker", |
| "dateTimeFormat": "STRING" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3005"> |
| { |
| "results": [ |
| { |
| "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc", |
| "name": "broker", |
| "createdTime": "2022-02-18 15:50:49.272" |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Pattern"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Datetime Pattern</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The default format of the string datetime representation is "yyyy-MM-DD HH:mm:ss.SSS". |
| It can be changed using the parameter <fo:inline font-family="monospace">dateTimePattern</fo:inline>. |
| The query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3015"> |
| { |
| "sql": "select id, name, createdTime from broker", |
| "dateTimeFormat": "STRING", |
| "dateTimePattern": "yyyy/MM/dd HH:mm:ss.SSS" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3019"> |
| { |
| "results": [ |
| { |
| "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc", |
| "name": "broker", |
| "createdTime": "2022/02/18 15:50:49.272" |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Decimal-Digits"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Decimal Digits</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| By default, decimal digits value is 6, meaning there will be 6 digits after decimal point. |
| For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3026"> |
| { |
| "sql": "select avg(queueDepthMessages) from queue" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3030"> |
| { |
| "results": [ |
| { |
| "avg(queueDepthMessages)": 0.437227 |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This behavior can be changed for each value separately using ROUND or TRUNC functions, but can also be changed for |
| the whole query result by supplying <fo:inline font-family="monospace">decimalDigits</fo:inline> parameter. Following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3037"> |
| { |
| "sql": "select avg(queueDepthMessages) from queue", |
| "decimalDigits": 2 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3041"> |
| { |
| "results": [ |
| { |
| "avg(queueDepthMessages)": 0.43 |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Rounding-Mode"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Rounding Mode</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Rounding mode affects how results of the arithmetic operations will be rounded. The rules of applying different rounding |
| modes can be found in appropriate <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html)"><fo:inline>javadoc</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html)">https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html</fo:basic-link>]</fo:inline>. |
| Default rounding mode is HALF_UP. Changing rounding mode will affect division operations, but will not affect results of |
| ROUND() and TRUNC() functions (which always use rounding mode HALF_UP and HALF_DOWN appropriately). |
| Following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3051"> |
| { |
| "sql": "select 2/3", |
| "decimalDigits": 2, |
| "roundingMode": "DOWN" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| uses rounding mode <fo:inline font-family="monospace">DOWN</fo:inline> and returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3058"> |
| { |
| "results": [ |
| { |
| "2/3": 0.66 |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When rounding mode will be changed to <fo:inline font-family="monospace">UP</fo:inline> |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3065"> |
| { |
| "sql": "select 2/3", |
| "decimalDigits": 2, |
| "roundingMode": "UP" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| result will be changed as well: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3069"> |
| { |
| "results": [ |
| { |
| "2/3": 0.67 |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Object-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.4. Object Types (Domains)</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Object types or domains to query from are specified in the "FROM" clause. The broker object hierarchy can be retrieved |
| using an endpoint http://<hostname>:<port>/service/metadata |
| |
| Alternatively following SQL query can be fired |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3076"> |
| { |
| "sql": "select * from domain" |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returning similar result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3080"> |
| { |
| "results": [ |
| { |
| "name": "AccessControlProvider" |
| }, |
| { |
| "name": "AclRule" |
| }, |
| { |
| "name": "AuthenticationProvider" |
| }, |
| { |
| "name": "Binding" |
| }, |
| { |
| "name": "BrokerConnectionLimitProvider" |
| }, |
| { |
| "name": "BrokerLogInclusionRule" |
| }, |
| { |
| "name": "BrokerLogger" |
| }, |
| { |
| "name": "Certificate" |
| }, |
| { |
| "name": "Connection" |
| }, |
| { |
| "name": "ConnectionLimitRule" |
| }, |
| { |
| "name": "Consumer" |
| }, |
| { |
| "name": "Domain" |
| }, |
| { |
| "name": "Exchange" |
| }, |
| { |
| "name": "Group" |
| }, |
| { |
| "name": "GroupMember" |
| }, |
| { |
| "name": "GroupProvider" |
| }, |
| { |
| "name": "KeyStore" |
| }, |
| { |
| "name": "Plugin" |
| }, |
| { |
| "name": "Port" |
| }, |
| { |
| "name": "Queue" |
| }, |
| { |
| "name": "RemoteReplicationNode" |
| }, |
| { |
| "name": "Session" |
| }, |
| { |
| "name": "TrustStore" |
| }, |
| { |
| "name": "User" |
| }, |
| { |
| "name": "VirtualHost" |
| }, |
| { |
| "name": "VirtualHostAccessControlProvider" |
| }, |
| { |
| "name": "VirtualHostAlias" |
| }, |
| { |
| "name": "VirtualHostConnectionLimitProvider" |
| }, |
| { |
| "name": "VirtualHostLogInclusionRule" |
| }, |
| { |
| "name": "VirtualHostLogger" |
| }, |
| { |
| "name": "VirtualHostNode" |
| } |
| ], |
| "total": 31 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In addition to the object types supported by broker query REST API, following object types (domains) |
| can be used as well: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3086"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.7. Query Engine Domains</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Domain</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">AclRule</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Binding</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Certificate</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ConnectionLimitRule</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Domain</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Those objects do not belong to the broker object hierarchy (as they don't descend from ConfiguredObject), they were |
| added to make queries against listed domains more simple. |
| For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3129"> |
| SELECT * |
| FROM AclRule |
| WHERE identity = 'amqp_user1' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3133"> |
| { |
| "results": [ |
| { |
| "identity": "amqp_user1", |
| "attributes": {}, |
| "action": { |
| "objectType": "VIRTUALHOST", |
| "properties": { |
| "name": null, |
| "empty": true |
| }, |
| "operation": "ACCESS" |
| }, |
| "objectType": null, |
| "operation": null, |
| "outcome": "ALLOW_LOG" |
| }, |
| { |
| "identity": "amqp_user1", |
| "attributes": { |
| "NAME": "request.amqp_user1", |
| "ROUTING_KEY": "*" |
| }, |
| "action": { |
| "objectType": "EXCHANGE", |
| "properties": { |
| "name": "request.amqp_user1", |
| "empty": false |
| }, |
| "operation": "PUBLISH" |
| }, |
| "objectType": null, |
| "operation": null, |
| "outcome": "ALLOW" |
| }, |
| { |
| "identity": "amqp_user1", |
| "attributes": { |
| "NAME": "broadcast.amqp_user1.*" |
| }, |
| "action": { |
| "objectType": "QUEUE", |
| "properties": { |
| "name": "broadcast.amqp_user1.*", |
| "empty": false |
| }, |
| "operation": "CONSUME" |
| }, |
| "objectType": null, |
| "operation": null, |
| "outcome": "ALLOW_LOG" |
| }, |
| { |
| "identity": "amqp_user1", |
| "attributes": { |
| "NAME": "response.amqp_user1" |
| }, |
| "action": { |
| "objectType": "QUEUE", |
| "properties": { |
| "name": "response.amqp_user1", |
| "empty": false |
| }, |
| "operation": "CONSUME" |
| }, |
| "objectType": null, |
| "operation": null, |
| "outcome": "ALLOW_LOG" |
| } |
| ], |
| "total": 4 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Please note, that keyword <fo:inline font-family="monospace">FROM</fo:inline> isn't mandatory, it is possible to execute queries without it, when the result shouldn't |
| retrieve any data from broker. Few examples of such queries would be: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3140"> |
| SELECT CURRENT_TIMESTAMP() |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3142"> |
| SELECT DATE(CURRENT_TIMESTAMP()) |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3144"> |
| SELECT (2 + 10) / 3 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3146"> |
| SELECT 2 * 5 > 12 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Filtering-Results"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.5. Filtering Results</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Filtering is achieved by using different operators groups in a <fo:inline font-family="monospace">WHERE</fo:inline> clause. Operators |
| can be divided into comparison operators, conditional operators and logical operators. |
| </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Data-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Broker Data Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Broker entities have fields belonging to different java types: primitives (boolean, int, long, double), strings, |
| datetime <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)"><fo:inline>Date</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)">https://docs.oracle.com/javase/8/docs/api/java/util/Date.html</fo:basic-link>]</fo:inline>, |
| <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)"><fo:inline>LocalDate</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)">https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html</fo:basic-link>]</fo:inline>, |
| <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)"><fo:inline>LocalDateTime</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)">https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html</fo:basic-link>]</fo:inline>, |
| <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)"><fo:inline>Instant</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)">https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html</fo:basic-link>]</fo:inline>. |
| Object IDs are usually of <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html)"><fo:inline>UUID</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html)">https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html</fo:basic-link>]</fo:inline> type. |
| Many values are enums. |
| |
| When comparing field values, they follow some implicit casting rules: enums and UUIDs are cast to strings, |
| datetime values are cast to <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)"><fo:inline>Instant</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)">https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html</fo:basic-link>]</fo:inline>, |
| numeric values are cast to <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html)"><fo:inline>BigDecimal</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html)">https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html</fo:basic-link>]</fo:inline>. |
| |
| When casting string value to date, by default is used pattern "uuuu-MM-dd". |
| |
| That allows to run following queries: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3182"> |
| SELECT * |
| FROM certificate |
| WHERE DATE(validUntil) = '2020-12-31' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Here string value is implicitly cast to Instant and both value are compared as Instant instances. |
| When casting string to datetime, by default is used pattern "uuuu-MM-dd HH:mm:ss" with optional 0-6 second fractions. |
| That allows to run following queries: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3186"> |
| SELECT * |
| FROM certificate |
| WHERE DATE(validUntil) > '2020-12-31 23:59:59.999' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Here string value is implicitly cast to Instant as well and both value are compared as Instant instances. |
| It is important to compare values of the same type, otherwise an error may be returned or query may be evaluated |
| erroneously. For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3190"> |
| SELECT * |
| FROM queue |
| WHERE durable = 'true' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will return an empty result, because field <fo:inline font-family="monospace">durable</fo:inline> is of boolean type and comparing boolean value with a string 'true' |
| will always return false. The correct query should be |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3197"> |
| SELECT * |
| FROM queue |
| WHERE durable = true |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Keyword-DISTINCT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Keyword DISTINCT</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To remove duplicates from the results keyword "DISTINCT" can be used. For example, query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3204"> |
| SELECT overflowPolicy |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will return results for all queues, but query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3208"> |
| SELECT DISTINCT overflowPolicy |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will return only several values. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Comparison-Operators"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Comparison Operators</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">BETWEEN</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The BETWEEN operator selects values within a given range. The values can be numbers, text, or dates. The BETWEEN |
| operator is inclusive: begin and end values are included. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3226"> |
| BETWEEN(expression1 AND expression2) |
| BETWEEN(expression1, expression2) |
| BETWEEN expression1 AND expression2 |
| BETWEEN expression1, expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3233"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.8. BETWEEN Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Lower threshold</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Higher threshold</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find names of the queues having depth in messages between 1000 and 2000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3274"> |
| SELECT |
| name |
| FROM queue |
| WHERE queueDepthMessages BETWEEN (1000, 2000) |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificates expiring between 2024-12-01 and 2024-12-31 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3278"> |
| SELECT * |
| FROM certificate |
| WHERE DATE(validUntil) BETWEEN ('2024-12-01' AND '2024-12-31') |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">EQUAL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Equal operator is designated using "=" character. It allows comparison of boolean, datetime, |
| numeric and string values. Both compared values must have same type. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3291"> |
| expression1 = expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3298"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.9. EQUAL Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queue by name |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3339"> |
| SELECT * |
| FROM queue |
| WHERE name = 'broadcast.amqp_user1.Public' |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">GREATER THAN</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Greater than operator is designated using ">" character. It allows comparison of datetime, |
| numeric and string values. Both compared values must have same type. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3352"> |
| expression1 > expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3359"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.10. GREATER THAN Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having message depth greater than 1000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3400"> |
| SELECT * |
| FROM queue |
| WHERE queueDepthMessages > 1000 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">GREATER THAN OR EQUAL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Greater than or equal operator is designated using ">=" characters. It allows comparison of |
| datetime, numeric and string values. Both compared values must have same type. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3413"> |
| expression1 >= expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3420"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.11. GREATER THAN OR EQUAL Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having message depth greater than or equal to 1000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3461"> |
| SELECT * |
| FROM queue |
| WHERE queueDepthMessages >= 1000 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">IN</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The IN operator allows specifying multiple values in a WHERE clause. The IN operator is a |
| shorthand for multiple OR conditions. |
| Alternatively IN operator can be used with a subquery. When a subquery is used, it should |
| return only one value, otherwise an error will be returned. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3474"> |
| expression IN (value_1, value_2, ..., value_n) |
| expression IN (SELECT value FROM domain) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3481"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.12. IN Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">value_1 - value_n</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Values to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find bindings having destination queue belonging to the list |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3522"> |
| SELECT * |
| FROM binding |
| WHERE destination IN ('broadcast.amqp_user1.Service1', 'broadcast.amqp_user1.Service2', 'broadcast.amqp_user1.Service3') |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find bindings having destination queue with message depth between 1000 and 2000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3526"> |
| SELECT * |
| FROM binding |
| WHERE destination IN (SELECT name FROM queue WHERE queueDepthMessages BETWEEN (1000, 2000)) |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">IS NULL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The IS NULL operator is used to compare ordinary values with NULL values. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3539"> |
| expression IS NULL |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3546"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.13. IS NULL Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to NULL</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having NULL description |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3576"> |
| SELECT * |
| FROM queue |
| WHERE description IS NULL |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LESS THAN</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Less than operator is designated using "<" character. It allows comparison of datetime, numeric and string values. |
| Both compared values must have same type. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3589"> |
| expression1 < expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3596"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.14. LESS THAN Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having message depth less than 1000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3637"> |
| SELECT * |
| FROM queue |
| WHERE queueDepthMessages < 1000 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LESS THAN OR EQUAL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Less than or equal operator is designated using "<=" characters. It allows comparison of |
| datetime, numeric and string values. Both compared values must have same type. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3650"> |
| expression1 <= expression2 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3657"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.15. LESS THAN OR EQUAL Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having message depth less than or equal to 1000 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3698"> |
| SELECT * |
| FROM queue |
| WHERE queueDepthMessages <= 1000 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LIKE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The LIKE operator is used to search for a specified pattern in a string. There are two |
| wildcards often used in conjunction with the LIKE operator: the percent sign "%" represents |
| zero, one, or multiple characters; the question mark "?" represents one, single character. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3711"> |
| expression LIKE pattern |
| expression LIKE pattern ESCAPE escapeCharacter |
| expression LIKE (pattern) |
| expression LIKE (pattern ESCAPE escapeCharacter) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3718"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.16. LIKE Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Pattern to compare against</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">escapeCharacter</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Character used to escape percent sign or question mark</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having name starting with a string "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3770"> |
| SELECT * |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues with name containing string "amqp_user1" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3774"> |
| SELECT * |
| FROM queue |
| WHERE name LIKE '%amqp_user1%' |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Conditional-Operators"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Conditional Operators</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">CASE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The CASE statement goes through conditions and returns a value when the first condition is met |
| (like an if-then-else statement). So, once a condition is true, it will stop reading and return |
| the result. If no conditions are true, it returns the value in the ELSE clause. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3790"> |
| CASE |
| WHEN condition1 THEN result1 |
| WHEN condition2 THEN result2 |
| WHEN conditionN THEN resultN |
| ELSE result |
| END |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3797"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.17. CASE Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">condition1 - conditionN</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Conditions to estimate</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">result1 - resultN</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Results to return</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Group queues into good (< 60% of max depth), bad (60% - 90% of max depth) and critical |
| (> 90% of max depth), count number of queues in each group. Consider queues with unlimited |
| depth being good. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3838"> |
| SELECT |
| COUNT(*), |
| CASE |
| WHEN maximumQueueDepthMessages != -1 AND maximumQueueDepthBytes != -1 |
| AND (queueDepthMessages > maximumQueueDepthMessages * 0.9 OR queueDepthBytes > maximumQueueDepthBytes * 0.9) |
| THEN 'critical' |
| WHEN maximumQueueDepthMessages != -1 AND maximumQueueDepthBytes != -1 |
| AND queueDepthMessages BETWEEN (maximumQueueDepthMessages * 0.6 AND maximumQueueDepthMessages * 0.9) |
| OR queueDepthBytes BETWEEN (maximumQueueDepthBytes * 0.6 AND maximumQueueDepthBytes * 0.9) |
| THEN 'bad' |
| ELSE 'good' |
| END AS queueState |
| FROM queue |
| GROUP BY queueState |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Logical-Operators"><fo:block/><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The "AND" and "OR" operators are used to filter records based on more than one condition: the "AND" |
| operator displays a record if all the conditions separated by "AND" are TRUE. The "OR" operator |
| displays a record if any of the conditions separated by "OR" is TRUE. The "NOT" operator displays a |
| record if the condition(s) is NOT TRUE. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Sorting-Results"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.6. Sorting Results</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Default sorting order is ascending, default sorting field is `name` for domains having this field. Results |
| of the following query will be sorted ascending by name: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3848"> |
| SELECT * |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Few exceptions are following:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3854"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.18. Default sorting fields</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Domain</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Default sorting field</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">AclRule</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">identity</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Certificate</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">alias</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ConnectionLimitRule</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">identity</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Results of the following query will be sorted ascending by alias:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3903"> |
| SELECT * |
| FROM certificate |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To apply another sorting rules clause `ORDER BY` should be used. It may contain one of the fields specified |
| in the `SELECT` clause: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3907"> |
| SELECT |
| id, name, state |
| FROM queue |
| ORDER BY name |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Alternatively it may contain fields not specified in `SELECT` clause: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3911"> |
| SELECT |
| id, name, state |
| FROM queue |
| ORDER BY overflowPolicy |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Instead of using field names or aliases items in the `ORDER BY` clause can also be referenced by ordinal - |
| the numeric value of their order of appearance in the `SELECT` clause. For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3915"> |
| SELECT |
| name, overflowPolicy |
| FROM queue |
| ORDER BY 2 DESC, 1 ASC |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will return results sorted in descending order by overflow policy and inside the groups with the same overflow policy |
| name results will be sorted by queue name in ascending order. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Aggregation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.7. Aggregation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Aggregation is achieved using functions AVG(), COUNT(), MAX(), MIN() and SUM(). |
| It's important to remember, that aggregation functions don't consider NULL values. For example, following query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3924"> |
| SELECT COUNT(description) |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will return count of queues having non-null value of a field `description`. |
| To consider NULL values, they should be handled using COALESCE() function or CASE |
| operator: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3928"> |
| SELECT COUNT(COALESCE(description, '')) |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternatively</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3932"> |
| SELECT COUNT(CASE WHEN description IS NULL THEN '' ELSE description END) |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Several aggregation functions can be used together in the same query:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3936"> |
| SELECT |
| COUNT(*), |
| AVG(queueDepthMessages), |
| SUM(queueDepthMessages), |
| SUM(queueDepthBytes), |
| MIN(queueDepthMessages), |
| MAX(queueDepthMessages), |
| MIN(queueDepthBytes), |
| MAX(queueDepthBytes) |
| FROM queue |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Grouping"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.8. Grouping</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Grouping of the aggregated results can be achieved using the `GROUP BY` clause. |
| For example, following query finds count of ACL rules for each user and output them in descending order: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3943"> |
| SELECT |
| COUNT(*) AS cnt, identity |
| FROM aclrule |
| GROUP BY identity |
| ORDER BY 1 DESC |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The result of the query:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3947"> |
| { |
| "results": [ |
| { |
| "cnt": { |
| "amqp_user1": 6, |
| "amqp_user2": 4, |
| "amqp_user3": 4, |
| ... some results ommited ... |
| "amqp_user97": 2, |
| "amqp_user98": 1, |
| "amqp_user99": 1 |
| } |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To filter the grouped result `HAVING` clause can be used: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3951"> |
| SELECT |
| overflowPolicy, COUNT(*) |
| FROM queue |
| GROUP BY overflowPolicy |
| HAVING SUM(queueDepthMessages) > 1000 |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.9. Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Aggregation-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Aggregation Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">AVG</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The AVG() function returns the average value of a collection. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3970"> |
| AVG(expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3977"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.19. AVG Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result average value of which should be found</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find average amount of bytes used by queues with names starting with "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4007"> |
| SELECT |
| AVG(queueDepthBytes) |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">COUNT</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The COUNT() function returns the number of items that matches a specified criterion. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4020"> |
| COUNT(expression) |
| COUNT(DISTINCT expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4027"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.20. COUNT Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result of which should be counted</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find amount of queues with names starting with "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4057"> |
| SELECT |
| COUNT (*) |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">MAX</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The MAX() function returns the maximum value of a collection. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4070"> |
| MAX(expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4077"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.21. MAX Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result maximal value of which should be found</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find maximal amount of bytes used by queues with names starting with "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4107"> |
| SELECT |
| MAX(queueDepthBytes) |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">MIN</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The MIN() function returns the minimum value of a collection. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4120"> |
| MIN(expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4127"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.22. MIN Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result minimal value of which should be found</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find minimal amount of bytes used by queues with names starting with "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4157"> |
| SELECT |
| MIN(queueDepthBytes) |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">SUM</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The SUM() function returns the total sum of a numeric collection. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4170"> |
| SUM(expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4177"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.23. SUM Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result of which should be summed</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find amount of bytes used by queues having names starting with "broadcast" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4207"> |
| SELECT |
| SUM(queueDepthBytes) |
| FROM queue |
| WHERE name LIKE 'broadcast%' |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Datetime Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">CURRENT_TIMESTAMP</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The CURRENT_TIMESTAMP() function returns current date and time. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4223"> |
| CURRENT_TIMESTAMP() |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Function has no parameters</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find current date and time |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4235"> |
| SELECT CURRENT_TIMESTAMP() |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">DATE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The DATE() function extracts the date part from a datetime expression. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4248"> |
| DATE(expression) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4255"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.24. DATE Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A valid date/datetime value</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificates having validFrom equal to 01. January 2020 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4285"> |
| SELECT * |
| FROM certificate |
| WHERE DATE(validFrom) = '2020-01-01' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificates expiring between 01. January 2020 and 10. January 2020 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4289"> |
| SELECT * |
| FROM certificate |
| WHERE DATE(validUntil) BETWEEN ('2020-01-01', '2020-01-10') |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">DATEADD</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The DATEADD() function adds a time/date interval to a date and returns the date. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4302"> |
| DATEADD(TIMEUNIT, VALUE, DATE) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4309"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.25. DATEADD Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The type of time unit to add. |
| Can be one of the following values: |
| YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VALUE</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The value of the time/date interval to add. |
| Both positive and negative values are allowed |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The date to be modified</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificates expiring in less than 30 days |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4361"> |
| SELECT * |
| FROM certificate |
| WHERE DATEADD(DAY, -30, validUntil) < CURRENT_TIMESTAMP() |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">DATEDIFF</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The DATEDIFF() function returns the number of time units between two date values. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4374"> |
| DATEDIFF(TIMEUNIT, DATE1, DATE2) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4381"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.26. DATEDIFF Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Time unit to calculate difference. |
| Can be one of the following values: |
| YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE1</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Start date |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE2</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| End date |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificate aliases and days until expiry |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4433"> |
| SELECT |
| alias, |
| DATEDIFF(DAY, CURRENT_TIMESTAMP(), validUntil) AS days_until_expiry |
| FROM certificate |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">EXTRACT</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The EXTRACT() function extracts a part from a given date. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4446"> |
| EXTRACT(TIMEUNIT FROM DATE) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4453"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.27. EXTRACT Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Time unit to extract. |
| Can be one of the following values: |
| YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The date to extract a part from</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificates issued in January 2020 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4494"> |
| SELECT * |
| FROM certificate |
| WHERE EXTRACT(YEAR FROM validFrom) = 2020 |
| AND EXTRACT(MONTH FROM validFrom) = 1 |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Null-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">NULL Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">COALESCE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The COALESCE() function returns the first non-null value in a list. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4510"> |
| COALESCE(value_1, value_2, ...., value_n) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4517"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.28. COALESCE Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">value_1 - value_n</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The values to test</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find count of queues having NULL description |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4547"> |
| SELECT |
| COUNT(COALESCE(description, 'empty')) AS RESULT |
| FROM queue |
| HAVING COALESCE(description, 'empty') = 'empty' |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Numeric-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Numeric Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">ABS</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The ABS() function returns the absolute value of a number. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4563"> |
| ABS(number) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4570"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.29. ABS Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A numeric value</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find absolute amount of days after the validFrom date of the certificates |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4600"> |
| SELECT |
| ABS(DATEDIFF(DAY, CURRENT_TIMESTAMP(), validFrom)) |
| FROM certificate |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">ROUND</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The ROUND() function takes a numeric parameter and rounds it to the specified number |
| of decimal places. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4613"> |
| ROUND(number, decimals) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4620"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.30. ROUND Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number to be rounded</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimals</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of decimal places to round to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find average queue depth in messages and round result to 2 decimal places |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4661"> |
| SELECT |
| ROUND(AVG(queueDepthMessages)) as result |
| FROM queue |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">TRUNC</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The TRUNC() function takes a numeric parameter and truncates it to the specified number |
| of decimal places. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4674"> |
| TRUNC(number, decimals) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4681"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.31. TRUNC Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number to be truncated</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimals</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of decimal places to truncate to</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find average queue depth in messages and truncate result to 2 decimal places |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4722"> |
| SELECT |
| TRUNC(AVG(queueDepthMessages)) as result |
| FROM queue |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-String-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">String Functions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">CONCAT</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The CONCAT() function takes a variable number of arguments and concatenates them into a single string. |
| It requires a minimum of one input value, otherwise CONCAT will raise an error. CONCAT implicitly |
| converts all arguments to string types before concatenation. The implicit conversion to strings follows |
| the existing rules for data type conversions. If any argument is NULL, CONCAT returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4738"> |
| CONCAT(expression_1, expression_2, expression_3, ..., expression_n) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4745"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.32. LENGTH Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression_1 - expression_n</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The expressions to add together</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Output certificate alias and validity dates using format "alias: validFrom - validUntil" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4775"> |
| SELECT |
| CONCAT(alias, ': ', DATE(validFrom), ' - ', DATE(validUntil)) as validity |
| FROM certificate |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LEN / LENGTH</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The LEN() / LENGTH() function takes a string parameter and returns its length. |
| The implicit conversion to strings follows the existing rules for data |
| type conversions. If any argument is NULL, LEN / LENGTH returns 0. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4788"> |
| LEN(string) |
| LENGTH(string) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4795"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.33. LENGTH Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to count the length for</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find certificate aliases having alias length greater than 10 |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4825"> |
| SELECT |
| alias |
| FROM certificate |
| WHERE LENGTH(alias) > 10 |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LOWER</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The LOWER() function takes a string parameter and converts it to lower case. The implicit |
| conversion to strings follows the existing rules for data type conversions. |
| If argument is NULL, LOWER returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4838"> |
| LOWER(string) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4845"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.34. LOWER Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to convert</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Filter connections by principal name (case-insensitive) |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4875"> |
| SELECT * |
| FROM connection |
| WHERE LOWER(principal) = 'amqp_user1' |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">LTRIM</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The LTRIM() function removes leading spaces from a string. |
| If argument is NULL, RTRIM returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4888"> |
| LTRIM(string) |
| LTRIM(string, chars) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4895"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.35. LTRIM Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find connection remote addresses |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4936"> |
| SELECT |
| LTRIM(remoteAddress, '/') AS remoteAddress |
| FROM connection |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">POSITION</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The POSITION() function takes a search pattern and a source string as parameters and returns |
| the position of the first occurrence of a pattern in a source string. If the pattern is not |
| found within the source string, this function returns 0. |
| Optionally takes third integer parameter, defining from which position search should be started. |
| Third parameter should be an integer greater than 0. If source string is NULL, returns zero. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4949"> |
| POSITION(pattern IN source) |
| POSITION(pattern IN source, startIndex) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4956"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.36. POSITION Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The pattern to search for in source</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The original string that will be searched</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">startIndex</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The index from which search will be started</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queues having string "broadcast" in their names |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5008"> |
| SELECT * |
| FROM queue |
| WHERE POSITION('broadcast', name) > 0 |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">REPLACE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The REPLACE() function replaces all occurrences of a substring within |
| a string, with a new substring. If source string is NULL, returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5021"> |
| REPLACE(source, pattern, replacement) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5028"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.37. REPLACE Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The original string</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The substring to be replaced</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">replacement</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The new replacement substring</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Output certificate issuer names without leading "CN=" |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5080"> |
| SELECT |
| REPLACE(issuerName, 'CN=', '') AS issuer |
| FROM certificate |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">RTRIM</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The RTRIM() function removes trailing spaces from a string. |
| If argument is NULL, RTRIM returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5093"> |
| RTRIM(string) |
| RTRIM(string, chars) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5100"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.38. RTRIM Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find connection remote addresses |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5141"> |
| SELECT |
| RTRIM(remoteAddress) |
| FROM connection |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">SUBSTR / SUBSTRING</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The SUBSTRING() function takes a source parameter, a start index parameter and optional |
| length parameter. Returns substring of a source string from the start index to the end or |
| using the length parameter. If source string is NULL, return NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5154"> |
| SUBSTRING(source, startIndex, length) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5161"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.39. SUBSTRING Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to extract from</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">startIndex</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The start position. Can be both a positive or negative number. If it is |
| a positive number, this function extracts from the beginning of the string. |
| If it is a negative number, function extracts from the end of the string |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">length</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The number of characters to extract. If omitted, the whole string will |
| be returned (from the start position). If zero or negative, an empty |
| string is returned |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find queue names removing from name part before the `.` character |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5213"> |
| SELECT |
| SUBSTRING(name, POSITION('.', name) + 1, LEN(name) - POSITION('.', name)) |
| FROM queue |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">TRIM</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The TRIM() function removes both leading and trailing spaces from a string. |
| If argument is NULL, TRIM returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5226"> |
| TRIM(string) |
| TRIM(string, chars) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5233"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.40. TRIM Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Find connections remote addresses removing `/` characters from both sides |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5274"> |
| SELECT |
| TRIM(remoteAddress, '/') |
| FROM connection |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">UPPER</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Definition"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Definition and Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The UPPER() function takes a string parameter and converts it to upper case. The implicit |
| conversion to strings follows the existing rules for data type conversions. If argument is NULL, |
| UPPER returns NULL. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Syntax</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5287"> |
| UPPER(string) |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Parameter Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5294"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 6.41. UPPER Parameters</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Parameter</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to convert</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="10pt">Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Filter connections by principal name (case-insensitive) |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5324"> |
| SELECT * |
| FROM connection |
| WHERE UPPER(principal) = 'AMQP_USER1' |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Set-Operations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.10. Set Operations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| UNION, MINUS and INTERSECT set operations are supported. |
| |
| The UNION operator is used to combine the result-set of two or more SELECT statements. Every SELECT statement within |
| UNION must have the same number of columns. The UNION operator selects distinct values by default. |
| To keep duplicates, UNION ALL should be used. |
| |
| For example, following query return certificate aliases along with the user names: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5331"> |
| SELECT UPPER(alias) |
| FROM certificate |
| UNION |
| SELECT UPPER(name) |
| FROM user |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The MINUS operator is used to remove the results of right SELECT statement from the results of left SELECT statement. |
| Every SELECT statement within MINUS must have the same number of columns. The MINUS operator selects distinct values by default. |
| To eliminate duplicates, MINUS ALL should be used. |
| |
| For example, following query finds queue names, not specified as binding destinations: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5335"> |
| SELECT name |
| FROM queue |
| MINUS |
| SELECT destination |
| FROM binding |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The INTERSECT operation is used to retain the results of right SELECT statement present in the results of left SELECT statement. |
| Every SELECT statement within INTERSECT must have the same number of columns. The INTERSECT operator selects distinct values by default. |
| to eliminate duplicates, INTERSECT ALL should be used. |
| |
| For example, following query finds certificate aliases similar with the user names: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5339"> |
| SELECT UPPER(alias) |
| FROM certificate |
| INTERSECT |
| SELECT UPPER(name) |
| FROM user |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Subqueries"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.11. Subqueries</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When executing subquery parent query domain mat be passed into the subquery using alias. |
| E.g. this query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5346"> |
| SELECT |
| id, |
| name, |
| (SELECT name FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connection, |
| (SELECT id FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connectionId, |
| (SELECT name FROM session WHERE id = c.session.id) as session |
| FROM consumer c |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5350"> |
| { |
| "results": [ |
| { |
| "id": "7a4d7a86-652b-4112-b535-61272b936b57", |
| "name": "1|1|qpid-jms:receiver:ID:6bd18833-3c96-4936-b9ee-9dec5f408b5c:1:1:1:broadcast.amqp_user1.public", |
| "connection": "[1] 127.0.0.1:39134", |
| "connectionId": "afbd0480-43b1-4b39-bc00-260c077095f3", |
| "session": "1" |
| } |
| ], |
| "total": 1 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5354"> |
| SELECT |
| name, |
| destination, |
| (SELECT id FROM queue WHERE name = b.destination) AS destinationId, |
| exchange, |
| (SELECT id FROM exchange WHERE name = b.exchange) AS exchangeId |
| FROM binding b |
| WHERE name = 'broadcast.amqp_user1.xxx.#' |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5358"> |
| { |
| "results": [ |
| { |
| "name": "broadcast.amqp_user1.xxx.#", |
| "destination": "broadcast.amqp_user1.xxx", |
| "destinationId": "d5ce9e78-8558-40db-8690-15abf69ab255", |
| "exchange": "broadcast", |
| "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158" |
| }, |
| { |
| "name": "broadcast.amqp_user1.xxx.#", |
| "destination": "broadcast.amqp_user2.xxx", |
| "destinationId": "88357d15-a590-4ccf-aee8-2d5cda77752e", |
| "exchange": "broadcast", |
| "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158" |
| }, |
| { |
| "name": "broadcast.amqp_user1.xxx.#", |
| "destination": "broadcast.amqp_user3.xxx", |
| "destinationId": "c8200f89-2587-4b0c-a8f6-120cda975d03", |
| "exchange": "broadcast", |
| "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158" |
| } |
| ], |
| "total": 3 |
| } |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5362"> |
| SELECT |
| alias, |
| (SELECT COUNT(id) FROM queue WHERE POSITION(UPPER(c.alias) IN name) > 0) AS queueCount |
| FROM certificate c |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| returns following result: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5366"> |
| { |
| "results": [ |
| { |
| "alias": "xxx", |
| "queueCount": 5 |
| }, |
| { |
| "alias": "xxy", |
| "queueCount": 5 |
| }, |
| { |
| "alias": "xxz", |
| "queueCount": 7 |
| } |
| ], |
| "total": 3 |
| } |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Performance-Tips"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">6.3.12.12. Performance Tips</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Try to select entity fields by names instead of using an asterix. For example, this query |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5373"> |
| SELECT |
| id, name, state, overflowPolicy, expiryPolicy |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| will be executed faster than this one: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5377"> |
| SELECT * |
| FROM queue |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Try to use `LIMIT` and `OFFSET` clauses where applicable to reduce the response JSON size:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5381"> |
| SELECT |
| id, name, state, overflowPolicy, expiryPolicy |
| FROM queue |
| LIMIT 10 OFFSET 0 |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-CORS"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Cross Origin Resource Sharing (CORS)</fo:marker><fo:block font-size="17.28pt">6.3.13. Cross Origin Resource Sharing (CORS)</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Broker supports Cross Origin Resource Sharing (CORS) |
| to allow web management consoles other than the one embedded in the |
| broker to use the REST API. This feature must be enabled by configuring |
| the CORS Allow Origins and related attributes on the |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP"><fo:inline>Section 7.17, “HTTP Plugin”</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Metrics"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Prometheus Metrics</fo:marker><fo:block font-size="20.735999999999997pt">6.4. Prometheus Metrics</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes the metrics endpoints exposing broker statistics in |
| <fo:basic-link external-destination="url(https://prometheus.io/)"><fo:inline>Prometheus format</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://prometheus.io/)">https://prometheus.io/</fo:basic-link>]</fo:inline>. |
| The metrics endpoint is intended for scraping by Prometheus server to collect the Broker telemetry.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Prometheus metric endpoints are mapped under /metrics path and /metrics/*. |
| The latter allows to get the Virtual Host statistics by specify the path to the virtual host as |
| /metrics/<virtual host node name>/< virtual host name>. |
| The former allow to get all Broker statistics or Virtual Host statistics when called with HOST header |
| set to the Virtual Host name</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The metrics endpoints allow anonymous access by default. If required, an authentication can be enabled for the |
| metrics endpoints by setting http management context variable |
| <fo:inline font-family="monospace">qpid.httpManagement.enableMetricContentAuthentication</fo:inline> to <fo:inline font-family="monospace">true</fo:inline>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker JVM statistics are disabled by default. The metrics endpoints can be called with parameter |
| <fo:inline font-family="monospace">includeDisabled</fo:inline> set to <fo:inline font-family="monospace">true</fo:inline> to include JVM broker metrics into endpoint |
| output. If required, the JVM metrics could be enabled by setting context variable |
| <fo:inline font-family="monospace">qpid.metrics.includeDisabled</fo:inline> to <fo:inline font-family="monospace">true</fo:inline>. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e5423"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For more information about Prometheus, check out the |
| <fo:basic-link external-destination="url(https://prometheus.io/docs/introduction/overview/)"><fo:inline>prometheus documentation</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://prometheus.io/docs/introduction/overview/)">https://prometheus.io/docs/introduction/overview/</fo:basic-link>]</fo:inline>. |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-AMQP-Intrinstic"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">AMQP Intrinstic Management</fo:marker><fo:block font-size="20.735999999999997pt">6.5. AMQP Intrinstic Management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The AMQP protocols 0-8..0-10 allow for creation, deletion and query of Exchanges, Queue |
| and Bindings.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The exact details of how to utilise this commands depends of the client. See the |
| documentation accompanying the client for details.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Managing Entities</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Managing Entities</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Management-Managing-Entities"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 7. Managing Entities</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes how to manage entities within the Broker. The principles underlying |
| entity management are the same regardless of entity type. For this reason, this section begins |
| with a general description that applies to all.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Since not all channels support the management of all entity type, this section commences |
| with a table showing which entity type is supported by each channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Entities-General"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">General Description</fo:marker><fo:block font-size="20.735999999999997pt">7.1. General Description</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following description applies to all entities within the Broker regardless of their |
| type.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5452"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5453"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>All entities have a parent, and may have children. The parent of the Broker is |
| called the System Context. It has no parent.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5456"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Entities have one or more attributes. For example a <fo:inline font-family="monospace">name</fo:inline>, an |
| <fo:inline font-family="monospace">id</fo:inline> or a <fo:inline font-family="monospace">maximumQueueDepth</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5467"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Entities can be durable or non-durable. Durable entities survive a restart. |
| Non-durable entities will not.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5470"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Attributes may have a default value. If an attribute value is not specified the |
| default value is used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5473"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Attributes values can be expressed as a simple value (e.g. <fo:inline font-family="monospace">myName</fo:inline> |
| or <fo:inline font-family="monospace">1234</fo:inline>), in terms of context variables |
| (e.g.<fo:inline font-family="monospace">${foo}</fo:inline> or <fo:inline font-family="monospace">/data/${foo}/</fo:inline>).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5488"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Each entity has zero or more context variables.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5491"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The System Context entity (the ultimate ancestor of all object) has a context too. |
| It is read only and is populated with all Java System Properties. Thus it can be |
| influenced from the Broker's external environment. See <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:inline>QPID_OPTS </fo:inline></fo:basic-link> |
| environment variable.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5497"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>When resolving an attribute's value, if the value contains a variable |
| (e.g.<fo:inline font-family="monospace">${foo}</fo:inline>), the variable is first resolved using the entity's own |
| context variables. If the entity has no definition for the context variable, the |
| entity's parent is tried, then its grandparent and so forth, all the way until the |
| SystemContext is reached.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5503"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Some entities support state and have a lifecycle.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">What follows now is a section dedicated to each entity type. For each entity type key |
| features are described along with the entities key attributes, key context variables, details |
| of the entities lifecycle and any other operations.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker</fo:marker><fo:block font-size="20.735999999999997pt">7.2. Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:basic-link internal-destination="Java-Broker-Concepts-Broker"><fo:inline>Broker</fo:inline></fo:basic-link> is the principal entity. It is |
| composed of a number of other entities that collaborate to provide message broker |
| facilities.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker can only be managed via the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.2.1. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5525"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5526"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the Broker</fo:inline>. This helps distinguish between Brokers in |
| environments that have many.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5531"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Shutdown timeout</fo:inline>. Broker shutdown timeout in seconds (disabled if 0). If clean |
| shutdown takes more than shutdown timeout, broker exits immediately.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5536"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Confidential configuration encryption provider</fo:inline>. The name of the |
| provider used to encrypt passwords and other secrets within the configuration. See <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Context</fo:marker><fo:block font-size="17.28pt">7.2.2. Context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5549"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5550"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">broker.flowToDiskThreshold</fo:inline> Controls the <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flow to disk</fo:inline></fo:basic-link> feature.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5558"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">broker.messageCompressionEnabled</fo:inline> Controls the <fo:basic-link internal-destination="Java-Broker-Runtime-Message-Compression"><fo:inline>message compression</fo:inline></fo:basic-link> .</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="Java-Broker-Management-Managing-Broker-Context-StoreFilesystemMaxUsagePercent"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">store.filesystem.maxUsagePercent</fo:inline> Maximum percentage of space |
| that may be utilised on a filesystem hosting a virtualhost's message store before |
| producer flow control is automatically imposed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This defaults to 90%.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="Java-Broker-Management-Managing-Broker-Context-BrokerDefaultSupportedProtocolVersionReply"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">qpid.broker_default_supported_protocol_version_reply</fo:inline> Used |
| during protocol negotiation. If set, the Broker will offer this AMQP version to a client |
| requesting an AMQP protocol that is not supported by the Broker. If not set, the Broker |
| offers the highest protocol version it supports. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5578"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">qpid.broker_msg_auth</fo:inline> If set true, the Broker ensures that the user |
| id of each received message matches the user id of the producing connection. If this |
| check fails, the message is returned to the producer's connection with a 403 (Access |
| Refused) error code.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This value can be overridden for each Virtual Host by setting the context value on the Virtual Host or |
| Virtual Host Node. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to false.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.2.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5594"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5595"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes"><fo:inline>Virtualhost |
| nodes</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports"><fo:inline>Ports</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5607"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Authentication Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5610"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Key Stores / Trust Stores</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5613"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Group Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5616"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Access Control Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5619"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Connection Limit Providers</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.2.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Nodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhost Nodes</fo:marker><fo:block font-size="20.735999999999997pt">7.3. Virtualhost Nodes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhost nodes can only be managed by the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Nodes-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.3.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The following virtualhost nodes types are supported. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5639"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5640"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>BDB - Node backed with Oracle Berkeley DB JE</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5643"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>BDB HA - Node backed with Oracle Berkeley DB JE utilising High Availability</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5646"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>DERBY - Node backed with Apache Derby</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5649"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>JDBC - Node backed with an external database <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>JDBC 4.0 compatible drivers must be available. See <fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:inline>Section F.2, “Installing External JDBC Driver”</fo:inline></fo:basic-link></fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5656"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>JSON - Node backed with a file containing json</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5659"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Memory - In-memory node (changes lost on Broker restart)</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.3.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5668"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5669"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the virtualhost node</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5674"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Default Virtual Host Node</fo:inline>. If true, messaging clients which do |
| not specify a virtualhost name will be connected to the virtualhost beneath this node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5679"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store Path or JDBC URL.</fo:inline> Refers the location used to store the |
| configuration of the virtualhost.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5684"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Role</fo:inline> (HA only). The role that this node is currently playing in |
| the group. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5689"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5690"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>MASTER - Virtualhost node is a master.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5693"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>REPLICA - Virtualhost node is a replica.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5696"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>WAITING - Virtualhost node is awaiting an election result, or may be awaiting |
| more nodes to join in order that an election may be held.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5699"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>DETACHED - Virtualhost node is disconnected from the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5702"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Priority</fo:inline> (HA only). The priority of this node when elections |
| occurs. The attribute can be used to make it more likely for a node to be elected than |
| other nodes, or disallow the node from never being elected at all. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-NodePriority"><fo:inline>Section 10.4.3, “Node Priority”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5708"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Minimum Number Of Nodes</fo:inline> (HA only - groups of three or more). |
| Allows the number of nodes required to hold an election to be reduced in order that |
| service can be restore when less than quorum nodes are present. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"><fo:inline>Section 10.4.4, “Required Minimum Number Of Nodes”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5714"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Allow this node to operate solo</fo:inline> (HA only - groups of two). Allows a single |
| node in a two node group to operate solo. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:inline>Section 10.4.5, “Allow to Operate Solo”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Node-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.3.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5726"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5727"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts"><fo:inline>Virtualhost</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5733"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes"><fo:inline>Remote |
| Replication Nodes</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.3.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5745"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5746"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Stop</fo:inline>. Stops the virtualhost node. This closes any existing |
| messaging connections to the virtualhost and prevents new ones. Any inflight |
| transactions are rolled back. Non durable queues and exchanges are lost. Transient |
| messages or persistent messages on non-durable queues are lost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When HA is in use, stopping the virtualhost node stops the virtualhost node from |
| participating in the group. If the node was in the master role, the remaining nodes will |
| try to conduct an election and elect a new master. If the node was in the replica role, |
| the node will cease to keep up to date with later transactions. A stopped node does not |
| vote in elections. Other nodes in the group will report the stopped node as |
| unreachable.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5753"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Start</fo:inline>. Activates the virtualhost node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5758"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Delete</fo:inline>. Deletes the virtualhost node and the virtualhost |
| contained within it. All exchanges and queues, any the messages contained within it are |
| removed. In the HA case, deleting the virtualhost node causes it be removed permanently |
| from the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhosts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">VirtualHosts</fo:marker><fo:block font-size="20.735999999999997pt">7.4. VirtualHosts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost is a independent namespace in which messaging is performed. Virtualhosts are |
| responsible for the storage of message data.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhosts can only be managed by the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhosts-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.4.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following virtualhost types are supported. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5777"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5778"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>BDB - Virtualhost backed with Oracle Berkeley DB JE</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5781"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>BDB HA - Virtualhost backed with Oracle BDB utilising High Availability</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5784"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>DERBY - Virtualhost backed with Apache Derby</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5787"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>JDBC - Virtualhost backed with an external database <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">2</fo:inline>JDBC 4.0 compatible drivers must be available. See <fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:inline>Section F.2, “Installing External JDBC Driver”</fo:inline></fo:basic-link></fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5794"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Memory - In-memory node (changes lost on Broker restart)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5797"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Provided - Virtualhost that co-locates message data within the parent virtualhost |
| node <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">3</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">3</fo:inline>Not available if Virtualhost Node type is JSON.</fo:block></fo:footnote-body></fo:footnote>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Context</fo:marker><fo:block font-size="17.28pt">7.4.2. Context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5810"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5811"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">use_async_message_store_recovery</fo:inline> Controls the <fo:basic-link internal-destination="Java-Broker-Runtime-Background-Recovery"><fo:inline>background recovery</fo:inline></fo:basic-link> |
| feature.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.4.3. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5825"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5826"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the virtualhost</fo:inline>. This is the name the messaging clients |
| refer to when forming a connection to the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5831"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store Path/JDBC URL</fo:inline>. Refers the file system location or |
| database URL used to store the message data.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5836"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store overflow/underflow</fo:inline>. Some virtualhosts have the ability to |
| limit the of the cumulative size of all the messages contained within the store. This |
| feature is described in detail <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management"><fo:inline>Section 9.2, “Disk Space Management”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5843"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Connection thread pool size</fo:inline>. Number of worker threads |
| used to perform messaging with connected clients. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to 64 or double the maximum number of available processors, whichever |
| is the larger.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5850"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Number of selectors</fo:inline>. Number of worker threads |
| used from the thread pool to dispatch I/O activity to the worker threads.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to one eighth of the thread pool size. Minimum 1.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5857"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store transaction timeouts</fo:inline>. Warns of long running producer |
| transactions. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5863"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Synchronization policy</fo:inline>. HA only. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"><fo:inline>Section 10.4.2, “Synchronization Policy”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.4.4. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5875"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5876"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges"><fo:inline>Exchange</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5882"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues"><fo:inline>Queue</fo:inline></fo:basic-link> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.4.5. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5894"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5895"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Stop</fo:inline>. Stops the virtualhost. This closes any existing messaging |
| connections to the virtualhost and prevents new ones. Any inflight transactions are |
| rolled back. Non durable queues and non durable exchanges are lost. Transient messages |
| or persistent messages on non-durable queues are lost.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5900"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Start</fo:inline>. Activates the virtualhost.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Remote Replication Nodes</fo:marker><fo:block font-size="20.735999999999997pt">7.5. Remote Replication Nodes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for HA only. A <fo:basic-link internal-destination="Java-Broker-Concepts-RemoteReplicationNodes"><fo:inline>remote replication node</fo:inline></fo:basic-link> is a representation of another virtualhost node |
| in the group. Remote replication nodes are not created directly. Instead the system |
| automatically creates a remote replication node for every node in the group. It serves to |
| provide a view of the whole group from every node in the system.</fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.5.1. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5919"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5920"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the remote replication node</fo:inline>. This is the name of the |
| remote virtualhost node</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5925"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Role</fo:inline>. Indicates the role that the remote node is playing in the |
| group at this moment. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5930"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5931"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">MASTER</fo:inline> - Remote node is a master.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5936"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">REPLICA</fo:inline> - Remote node is a replica.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5941"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">UNREACHABLE</fo:inline> - Remote node unreachable from this node. |
| This remote note may be down, or an network problem may prevent it from being |
| contacted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5947"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Join time</fo:inline>. Time when first contact was established with this |
| node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5952"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Last known transaction id</fo:inline>. Last transaction id reported |
| processed by node. This is an internal transaction counter and does not relate to any |
| value available to the messaging clients. This value can only be used to determine the |
| node is up to date relative to others in the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.5.2. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.5.3. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5967"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5968"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Delete</fo:inline>. Causes the remote node to be permanently removed from |
| the group. This operation should be used when the virtualhost node cannot be deleted |
| from its own Broker, for instance, if a Broker has been destroyed by machine |
| failure.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Operations</fo:marker><fo:block font-size="17.28pt">7.5.4. Operations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5979"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5980"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Transfer Master</fo:inline>. Initiates a process where a master is moved to |
| anther node in the group. The transfer sequence is as follows. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e5985"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5986"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Group waits until the proposed master is reasonable up to date.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5989"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Any in-flight transactions on the current master are blocked.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5992"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The current master awaits the proposed master to become up to date.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5995"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The mastership is transferred. This will automatically disconnect messaging |
| clients from the old master, and in-flight transactions are rolled back. Messaging |
| clients reconnect to the new master.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5998"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The old master will rejoin as a replica.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Exchanges</fo:marker><fo:block font-size="20.735999999999997pt">7.6. Exchanges</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges"><fo:inline>Exchanges</fo:inline></fo:basic-link> can be managed using the |
| HTTP or AMQP channels.</fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.6.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6015"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6016"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Direct</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6019"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Topic</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6022"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Fanout</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6025"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Headers</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.6.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6033"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6034"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name of the exchange</fo:inline>. Message producers refer to this name when |
| producing messages.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6039"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Type of the exchange</fo:inline>. Can be either <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types-Direct"><fo:inline>direct</fo:inline></fo:basic-link>, <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types-Topic"><fo:inline>topic</fo:inline></fo:basic-link>, <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types-Fanout"><fo:inline>fanout</fo:inline></fo:basic-link>, or <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types-Headers"><fo:inline>headers</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6056"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Durable</fo:inline>. Whether the exchange survives a restart.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6061"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Durable</fo:inline>. Whether the exchange survives a restart.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6066"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">alternateBinding</fo:inline>. Provides an alternate destination that, depending on behaviour |
| requested by the producer, may be used if a message arriving at this exchange cannot be routed to at least |
| one queue.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6071"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">unroutableMessageBehaviour</fo:inline>. (AMQP 1.0 only) Default behaviour to apply when a |
| message is not routed to any queues.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.6.3. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Queues</fo:marker><fo:block font-size="20.735999999999997pt">7.7. Queues</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:basic-link internal-destination="Java-Broker-Concepts-Queues"><fo:inline>Queues</fo:inline></fo:basic-link> are named entities that |
| hold/buffer messages for later delivery to consumer applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Queues can be managed using the HTTP or AMQP channels.</fo:block><fo:block id="Java-Broker-Management-Managing-Queues-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.7.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports four different queue types, each with different delivery semantics.<fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6096"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6097"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Standard"><fo:inline>Standard</fo:inline></fo:basic-link> - a simple First-In-First-Out (FIFO) queue</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6102"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Priority"><fo:inline>Priority</fo:inline></fo:basic-link> - delivery order depends on the priority of each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6107"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Sorted"><fo:inline>Sorted</fo:inline></fo:basic-link> - |
| delivery order depends on the value of the sorting key property in each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6112"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-LVQ"><fo:inline>Last Value |
| Queue</fo:inline></fo:basic-link> - also known as an LVQ, retains only the last (newest) message received |
| with a given LVQ key value</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Queues-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.7.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6121"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6122"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name of the queue</fo:inline>. Message consumers and browsers refer to this |
| name when they wish to subscribe to queue to receive messages from it.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6127"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Type of the queue</fo:inline>. Can be either <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Standard"><fo:inline>standard</fo:inline></fo:basic-link>, <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Priority"><fo:inline>priority</fo:inline></fo:basic-link>, <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Sorted"><fo:inline>sorted</fo:inline></fo:basic-link>, or <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-LVQ"><fo:inline>lvq</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6144"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Durable</fo:inline>. Whether the queue survives a restart. Messages on a |
| non durable queue do not survive a restart even if they are marked persistent.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6149"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Maximum/Minimum TTL</fo:inline>. Defines a maximum and minimum time-to-live (TTL). Messages |
| arriving with TTL larger than the maximum (including those with no TTL at all, which are considered to |
| have a TTL of infinity) will be overridden by the maximum. Similarly, messages arriving with TTL less |
| than the minimum, will be overridden by the minimum. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Changing these values affects only new arrivals, existing messages already on the |
| queue are not affected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6156"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Message persistent override</fo:inline>. Allow message persistent settings |
| of incoming messages to be overridden. Changing this value affects only new arrivals, |
| existing messages on the queue are not affected. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6161"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Overflow policy</fo:inline>. Queues have the ability to limit the of the |
| cumulative size of all the messages contained within the store. This feature is |
| described in detail <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6168"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Alerting Thresholds</fo:inline>. Queues have the ability to alert on a |
| variety of conditions: total queue depth exceeded a number or size, message age exceeded |
| a threshold, message size exceeded a threshold. These thresholds are soft. See <fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts"><fo:inline>Appendix E, <fo:inline font-style="italic">Queue Alerts</fo:inline></fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6174"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Message Groups</fo:inline>. See <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Message-Grouping"><fo:inline>Section 4.7.2, “Messaging Grouping”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6180"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">maximumDeliveryAttempts</fo:inline>. See <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages"><fo:inline>Section 9.4, “Handing Undeliverable Messages”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6186"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">alternateBinding</fo:inline>. Provides an alternate destination that will be used when the |
| number of delivery attempts exceeds the <fo:inline font-style="italic">maximumDeliveryAttempts</fo:inline> configured on this |
| queue. Messages are also routed to this destination if this queue is deleted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Queue-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.7.3. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Consumers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Consumers</fo:marker><fo:block font-size="20.735999999999997pt">7.8. Consumers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A Consumer represents an application's live <fo:inline font-style="italic">subcription</fo:inline> to a queue. Its presence |
| in the model indicates that an application is currently connected to the queue <fo:inline font-style="italic">at this moment</fo:inline>. |
| </fo:block><fo:block id="Java-Broker-Management-Managing-Consumers-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Context</fo:marker><fo:block font-size="17.28pt">7.8.1. Context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6216"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6217"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">consumer.suspendNotificationPeriod</fo:inline> Governs the length of |
| time that a consumer may remain suspended before the the Broker begins to |
| produce <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003"><fo:inline>SUB-1003</fo:inline></fo:basic-link> |
| operational log messages.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Producers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Producers</fo:marker><fo:block font-size="20.735999999999997pt">7.9. Producers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A Producers represents an application sending messages to an exchange or a queue. Its presence |
| in the model indicates that an application is currently connected to the exchange or to the queue <fo:inline font-style="italic">at this moment</fo:inline>. |
| Producers are created when using AMQP 1.0 protocol. |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Ports</fo:marker><fo:block font-size="20.735999999999997pt">7.10. Ports</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ports provide TCP/IP connectivity for messaging and management. A port is defined to use a |
| protocol. This can be an AMQP protocol for messaging or HTTP for management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A port is defined to have one or more transports. A transport can either be plain (TCP) or |
| SSL (TLS). When SSL is in use, the port can be configured to accept or require client |
| authentication.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Any number of ports defined to use AMQP or HTTP protocols can be defined.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ports can only be managed by the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Context</fo:marker><fo:block font-size="17.28pt">7.10.1. Context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6252"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6253"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">qpid.port.max_open_connections</fo:inline>. The default maximum number |
| of concurrent connections supported by an AMQP port.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6258"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">qpid.port.amqp.acceptBacklog</fo:inline>. The backlog is the maximum |
| number of pending connections that may be queued by the AMQP port. Once the queue |
| is full, further connections will be refused. This is a request to the operating system |
| which may or may not be respected. The operating system itself may impose a ceiling. |
| <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">4</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">4</fo:inline>Some Linux distributions govern the ceiling with a <fo:inline font-family="monospace">sysctl</fo:inline> |
| setting <fo:inline font-family="monospace">net.core.somaxconn</fo:inline>.</fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6272"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">qpid.port.heartbeatDelay</fo:inline>. For AMQP 0-8..0-10 the default period with |
| which Broker and client will exchange heartbeat messages (in seconds). Clients may negotiate a |
| different heartbeat frequency or disable it altogether. For AMQP 1.0 this setting controls the |
| incoming idle timeout only. A value of 0 disables.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.10.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6282"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6283"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the port</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6288"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Port number</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6293"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Binding address</fo:inline>. Used to limit port binding to a |
| single network interface.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6298"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Authentication Provider</fo:inline>. The <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>authentication |
| provider</fo:inline></fo:basic-link> used to authenticate incoming connections.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6306"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Protocol(s)</fo:inline>. A list of protocols to be supported by |
| the port. For messaging choose one or more AMQP protocols. For management |
| choose HTTP.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6311"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Transports</fo:inline>. A list of transports supported by the |
| port. For messaging or HTTP management chose TCP, SSL or both.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6316"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Enabled/Disabled Cipher Suites</fo:inline>. Allows cipher |
| suites supported by the JVM to be enabled or disabled. The cipher |
| suite names are those understood by the JVM. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">SSLv3 is disabled by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6323"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Keystore</fo:inline>. <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores"><fo:inline>Keystore</fo:inline></fo:basic-link> |
| containing the Broker's private key. Required if SSL is in use.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6331"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Want/Need Client Auth</fo:inline>. Client authentication can be |
| either accepted if offered (want), or demanded (need). When Client |
| Certificate Authentication is in use a Truststore must be configured. When |
| using Client Certificate Authentication it may be desirable to use the <fo:basic-link internal-destination="Java-Broker-Security-External-Provider"><fo:inline>External Authentication |
| Provider</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6339"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Truststore</fo:inline>. <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores"><fo:inline>Trust store</fo:inline></fo:basic-link> |
| contain an issuer certificate or the public keys of the clients themselves |
| if peers only is desired.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6347"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Maximum Open Connections</fo:inline>. AMQP ports only. Limits |
| the number of connections that may be open at any one time.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6352"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Thread pool size</fo:inline>. AMQP ports only. Number of worker threads |
| used to process AMQP connections during connection negotiation phase.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to 8.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6359"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Number of selectors</fo:inline>. AMQP ports only. Number of worker threads |
| used from the thread pool to dispatch I/O activity to the worker threads.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to one eighth of the thread pool size. Minimum 1.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.10.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6371"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6372"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Connection</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.10.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6381"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When updating an existing port, changes to SSL settings, binding address and port |
| numbers do not become effective until the Broker is restarted.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Authentication Providers</fo:marker><fo:block font-size="20.735999999999997pt">7.11. Authentication Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>Authentication |
| Providers</fo:inline></fo:basic-link> are used by <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>Ports</fo:inline></fo:basic-link> to |
| authenticate connections.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Section 8.1, “Authentication Providers”</fo:inline></fo:basic-link></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.11.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The following authentication providers are supported: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6404"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6405"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Anonymous-Provider"><fo:inline>Anonymous</fo:inline></fo:basic-link>: allows anonymous connections to the |
| Broker</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6410"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-External-Provider"><fo:inline>External</fo:inline></fo:basic-link>: delegates to external mechanisms such as SSL Client |
| Certificate Authentication</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6415"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Kerberos-Provider"><fo:inline>Kerberos</fo:inline></fo:basic-link>: uses Kerberos to authenticate connections via |
| GSS-API.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6420"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider"><fo:inline>SimpleLDAP</fo:inline></fo:basic-link>: authenticate users against an LDAP |
| server.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6425"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-OAuth2-Provider"><fo:inline>OAuth2</fo:inline></fo:basic-link>: authenticate users against a OAuth2 Authorization |
| Server.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6430"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers"><fo:inline>ScramSha</fo:inline></fo:basic-link>: authenticate users against credentials stored in a |
| local database</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6435"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>Plain</fo:inline></fo:basic-link>: authenticate users against credentials stored in a local |
| database.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6440"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link>: authenticate users against credentials stored |
| in plain text in a local file.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6445"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5</fo:inline></fo:basic-link>: authenticate users against credentials |
| stored in a local database.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6450"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>Base64MD5PasswordFile</fo:inline></fo:basic-link>: authenticate users against credentials |
| stored encoded in a local file.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The last five providers offer user management facilities too, that is, users can |
| be created, deleted and passwords reset.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.11.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6463"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6464"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the authentication provider</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Other attributes are provider specific.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.11.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.11.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6482"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When updating an existing authentication provider, changes become effective until |
| the Broker is restarted.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Keystores</fo:marker><fo:block font-size="20.735999999999997pt">7.12. Keystores</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:basic-link internal-destination="Java-Broker-Concepts-Keystores"><fo:inline>Keystore</fo:inline></fo:basic-link> is required by a Port in |
| order to use SSL for messaging and/or management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports a number of different keystore types. These are described |
| below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The key material may be held by the Broker itself (held inline within the configuration) |
| or you may use references to files on the server's file system. Whichever mechanism is |
| chosen it is imperative to ensure that private key material remains confidential.</fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.12.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following keystore types are supported. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6503"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6504"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">File Key Store</fo:inline>. This type accepts the standard JKS |
| keystore format undertood by Java and Java tools such as <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the keystore contains multiple keys, it is possible to indicate which |
| certificate is to be used by specifying an alias. If no alias is specified |
| the first certificate found in the keystore will be used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6514"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Non Java Key Store</fo:inline>. A Non Java Keystore accepts key |
| material in PEM and DER file formats. With this store type it is necessary |
| to provide the private key, which must not be protected by password, |
| certificate and optionally a file containing intermediate |
| certificates.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6519"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Auto Generated Self Signed</fo:inline> has the ability to |
| generate a self signed certificate and produce a truststore |
| suitable for use by an application using the Apache Qpid JMS and Apache Qpid JMS AMQP 0-x clients.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The use of self signed certficates is not recommended for production |
| use.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.12.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6532"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6533"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the keystore</fo:inline>. Used to identify the |
| keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">File Key Stores</fo:inline> only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6546"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6547"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Keystore path</fo:inline>. File Key Stores only. Path to keystore |
| file</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6552"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Keystore password</fo:inline>. Password used to secure the keystore<fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6557"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The password of the certificate used by the Broker <fo:inline font-weight="bold">must</fo:inline> match the password of the keystore |
| itself. This is a restriction of the Broker implementation. If |
| using the <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:inline> utility, note |
| that this means the argument to the <fo:inline font-family="monospace">-keypass</fo:inline> option |
| must match the <fo:inline font-family="monospace">-storepass</fo:inline> option. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6572"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificate Alias</fo:inline>. An optional way of specifying |
| which certificate the broker should use if the keystore contains multiple |
| entries.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6577"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Manager Factory Algorithm</fo:inline>.In keystores the have more |
| than one certificate, the alias identifies the certificate to be |
| used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6582"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Store Type</fo:inline>. Type of Keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6587"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Use SNI host name matching</fo:inline>. If selected, SNI server name from |
| an SSL handshake will be used to select the most appropriate certificate |
| by matching an indicated hostname with the certificate hostname specified in subject or |
| subject alternatives as CN or DC.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Non Java Key Stores</fo:inline> |
| only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6600"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Private Key</fo:inline>. The private key in DER or PEM format. |
| This file must not be password protected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6606"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificate</fo:inline>. The cerificate in DER or PEM |
| format.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6611"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Intermediates Certificates </fo:inline>. Optional. Intermediate |
| cerificates in PEM or DER format.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Auto Generated Self Signed</fo:inline> |
| only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6624"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6625"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Algorithm</fo:inline>. Optional. Algorithm used to generate the |
| self-signed certificate.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6630"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Signature Algorithm </fo:inline>. Optional. The name of signature |
| algorithm.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6635"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Length</fo:inline>. Optional. Length of the key in |
| bits.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6640"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Duration</fo:inline>. Optional. Validility period in |
| months.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.12.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.12.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Truststores</fo:marker><fo:block font-size="20.735999999999997pt">7.13. Truststores</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Truststores"><fo:inline>Truststores</fo:inline></fo:basic-link> |
| have a number of roles within |
| the Broker. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6665"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6666"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>A truststore is required by a Port in order to support SSL client authentication.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6669"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Truststores have a optional role in end to end message encryption. The Broker acts as a |
| <fo:basic-link external-destination="url(https://en.wikipedia.org/wiki/Key_server_(cryptographic))"><fo:inline> |
| Key Server |
| </fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://en.wikipedia.org/wiki/Key_server_(cryptographic))">https://en.wikipedia.org/wiki/Key_server_(cryptographic)</fo:basic-link>]</fo:inline> |
| so that publishing applications have convenient access to recipient's public keys. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6675"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Some authentication providers also use a truststore when connecting to authentication systems that |
| are protected by a private issuer |
| SSL certificate. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">7.13.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following truststore types are supported. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6684"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6685"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">File Trust Store</fo:inline>. This type accepts the standard JKS |
| truststore format understood by Java and Java tools such as <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6693"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Non Java Trust Store</fo:inline>. A non java trust store accepts key |
| material in PEM and DER file formats. Either a path to the certificate on the server can be specified using the file:// protocol or the certificate can be uploaded with the data:// protocol</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6698"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Managed Certificate Store</fo:inline>. This type accepts key |
| material in PEM and DER file formats. Contrary to the Non Java Trust Store this store allows the user to add multiple certificates and stores them in the broker configuration.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6703"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Site Specific Trust Store</fo:inline>. This type will download a certificate from the provided SSL/TLS enabled URL. Note that you must specify both the protocol and the port. Example: https://example.com:443</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.13.2. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6714"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6715"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Name the truststore</fo:inline>. Used to identify the |
| truststore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6720"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Exposed as Message Source</fo:inline>. If enabled, the Broker |
| will distribute certificates contained within the truststore to clients. |
| Used by the end to end message encryption feature.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6725"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Trust Anchor Validity Enforced</fo:inline>. If enabled, authentications will |
| fail if the trust anchor's validity date has not yet been reached or already expired.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Revocation attributes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6735"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6736"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Enabled</fo:inline>. If set to true certificate revocation check is performed when |
| client tries to connect.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6741"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Only End Entity</fo:inline>. If enabled, check only the revocation status of |
| end-entity certificates.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6746"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Prefer CRLs</fo:inline>. If enabled, prefer CRL (specified in certificate |
| distribution points) to OCSP, if disabled prefer OCSP to CRL.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6751"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">No Fallback</fo:inline>. If enabled, disable fallback to CRL/OCSP (if |
| <fo:inline font-style="italic">Prefer CRLs</fo:inline> set to true, disable fallback to OCSP, |
| otherwise disable fallback to CRL in certificate distribution points).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6759"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Ignore Soft Failures</fo:inline>. If enabled, revocation check will succeed |
| if CRL/OCSP response cannot be obtained because of network error or OCSP responder returns |
| internalError or tryLater.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6764"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Server CRL Path Or Upload</fo:inline>. Path to Certificate Revocation List file. |
| If set, certificate revocation check uses only set CRL file and ignores CRL Distribution Points |
| in certificate.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">File Trust Stores</fo:inline> only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6777"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6778"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Path</fo:inline>. Path to truststore file</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6783"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Truststore password</fo:inline>. Password used to secure the truststore<fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6788"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The password of the certificate used by the Broker <fo:inline font-weight="bold">must</fo:inline> match the password of the keystore |
| itself. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6794"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificate Alias</fo:inline>. An optional way of specifying |
| which certificate the broker should use if the keystore contains multiple |
| entries.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6799"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Manager Factory Algorithm</fo:inline>. In keystores the have more |
| than one certificate, the alias identifies the certificate to be |
| used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6804"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Store Type</fo:inline>. Type of Keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6809"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Peers only</fo:inline>. When "Peers Only" option is selected for |
| the Truststore it will allow authenticate only those clients that present a |
| certificate exactly matching a certificate contained within the Truststore |
| database.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Non Java Trust Stores</fo:inline> |
| only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6822"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6823"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificates</fo:inline>. The cerificate(s) in DER or PEM |
| format.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.13.3. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.13.4. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Group-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Group Providers</fo:marker><fo:block font-size="20.735999999999997pt">7.14. Group Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Section 8.2, “Group Providers”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Access-Control-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Access Control Providers</fo:marker><fo:block font-size="20.735999999999997pt">7.15. Access Control Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An <fo:basic-link internal-destination="Java-Broker-Concepts-Access-Control-Providers"><fo:inline>Access Control |
| Provider</fo:inline></fo:basic-link> governs who may do what within the Broker. It governs both messaging and |
| management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>Section 8.3, “Access Control Providers”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Connection-Limit-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Connection Limit Providers</fo:marker><fo:block font-size="20.735999999999997pt">7.16. Connection Limit Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An <fo:basic-link internal-destination="Java-Broker-Concepts-Connection-Limit-Providers"><fo:inline>Connection Limit Provider</fo:inline></fo:basic-link> |
| governs how many connections could user open on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>Section 8.4, “Connection Limit Providers”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">HTTP Plugin</fo:marker><fo:block font-size="20.735999999999997pt">7.17. HTTP Plugin</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The HTTP Plugin provides the <fo:basic-link internal-destination="Java-Broker-Management-Channel-HTTP"><fo:inline>HTTP management channel</fo:inline></fo:basic-link> comprising of the <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web |
| Management Console</fo:inline></fo:basic-link> and the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link>.</fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Attributes</fo:marker><fo:block font-size="17.28pt">7.17.1. Attributes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6890"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6891"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Basic Authentication for HTTP</fo:inline>. It is set to false |
| (disabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6896"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Basic Authentication for HTTPS</fo:inline>. It is set to true |
| (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6901"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">SASL Authentication for HTTP</fo:inline>. It is set to true |
| (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6906"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">SASL Authentication for HTTPS</fo:inline>. It is set to true |
| (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6911"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Session timeout</fo:inline> is the timeout in seconds to close |
| the HTTP session. It is set to 10 minutes by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6916"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">CORS Allow Origins</fo:inline> is a comma separated list of origins that are allowed to access the REST API. Set to '*' to allow all origins. Default is empty, meaning CORS is disabled.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6921"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">CORS Allow Methods</fo:inline> is a comma separated list of HTTP methods that are allowed to be used when doing CORS requests. Default value is "HEAD,GET,POST".</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6926"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">CORS Allow Headers</fo:inline> is a comma separated list of HTTP headers that are allowed to be specified when doing CORS requests. Default value is "Content-Type,Accept,Origin,X-Requested-With".</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6931"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">CORS Allow Credentials</fo:inline> is a boolean indicating if the resource allows requests with credentials. Default value is true.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Children</fo:marker><fo:block font-size="17.28pt">7.17.2. Children</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">7.17.3. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not supported<fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6947"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">NOTE: Changes to the Session Timeout attribute only take |
| effect at broker restart. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Security</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Security</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Security"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 8. Security</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Authentication-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Authentication Providers</fo:marker><fo:block font-size="20.735999999999997pt">8.1. Authentication Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> In order to successfully establish a connection to the Broker, the connection must be |
| authenticated. The Broker supports a number of different authentication schemes, each with |
| its own "authentication provider". Any number of Authentication Providers can be configured on |
| the Broker at the same time. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6960"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Only unused Authentication Provider can be deleted. For delete requests attempting to |
| delete Authentication Provider associated with the Ports, the errors will be returned and |
| delete operations will be aborted. It is possible to change the Authentication Provider on |
| Port at runtime. However, the Broker restart is required for changes on Port to take effect. |
| </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6963"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Authentication Providers may choose to selectively disable certain authentication mechanisms |
| depending on whether an encrypted transport is being used or not. This is to avoid insecure |
| configurations. Notably, by default the PLAIN mechanism will be disabled on non-SSL |
| connections. This security feature can be overwritten by setting |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e6966">secureOnlyMechanisms = []</fo:block> in the authentication provider |
| section of the config.json. |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6969"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Warning</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Changing the secureOnlyMechanism is a breach of security and might cause passwords to be |
| transfered in the clear. Use at your own risk! |
| </fo:block></fo:block></fo:block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-LDAP-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Simple LDAP</fo:marker><fo:block font-size="17.28pt">8.1.1. Simple LDAP</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Simple LDAP authenticates connections against a Directory (LDAP). </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> To create a SimpleLDAPAuthenticationProvider the following mandatory fields are required: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6981"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6982"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">LDAP server URL</fo:inline> is the URL of the server, for example, |
| <fo:inline font-family="monospace">ldaps://example.com:636</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6989"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Search context</fo:inline> is the distinguished name of the search base |
| object. It defines the location from which the search for users begins, for example, |
| <fo:inline font-family="monospace">dc=users,dc=example,dc=com</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6996"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Search filter</fo:inline> is a DN template to find an LDAP user entry by |
| provided user name, for example, <fo:inline font-family="monospace">(uid={0})</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> Additionally, the following optional fields can be specified: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7004"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7005"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">LDAP context factory</fo:inline> is a fully qualified class name for the |
| JNDI LDAP context factory. This class must implement the <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContextFactory.html)"><fo:inline>InitialContextFactory</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContextFactory.html)">http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContextFactory.html</fo:basic-link>]</fo:inline> interface and produce instances of <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/DirContext.html)"><fo:inline>DirContext</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/DirContext.html)">http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/DirContext.html</fo:basic-link>]</fo:inline>. If |
| not specified a default value of <fo:inline font-family="monospace">com.sun.jndi.ldap.LdapCtxFactory</fo:inline> is |
| used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7019"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">LDAP authentication URL</fo:inline> is the URL of LDAP server for |
| performing "ldap bind". If not specified, the <fo:inline font-style="italic">LDAP server URL</fo:inline> will |
| be used for both searches and authentications.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7027"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Truststore name</fo:inline> is a name of <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores-Attributes"><fo:inline>configured |
| truststore</fo:inline></fo:basic-link>. Use this if connecting to a Directory over SSL (i.e. ldaps://) |
| which is protected by a certificate signed by a private CA (or utilising a self-signed |
| certificate).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7035"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Authentication method</fo:inline> is a method of authentication to use on binding into LDAP |
| when <fo:inline font-family="monospace">bind without search</fo:inline> mode is not selected. |
| Supported methods are NONE, SIMPLE, GSSAPI. The latter requires setting of <fo:inline font-style="italic">Login Config Scope</fo:inline> |
| which is a name of JAAS login module from JASS login configuration file specified using JVM system |
| property <fo:inline font-style="italic">java.security.auth.login.config</fo:inline> or Java security properties file. If |
| <fo:inline font-style="italic">Login Config Scope</fo:inline> is not specified with <fo:inline font-family="monospace">GSSAPI</fo:inline> |
| <fo:inline font-style="italic">Authentication method</fo:inline>, the scope <fo:inline font-style="italic">qpid-broker-j</fo:inline> will be used. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7061"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">useFullLDAPName</fo:inline> is a boolean flag, defining whether user principal name will be |
| obtained from full LDAP DN (default behavior) or from CN only. Set this flag to "false" to be able |
| referencing principal by its CN in broker ACL rules.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7066"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Additional group information can be obtained from LDAP. |
| There are two common ways of representing group membership in LDAP. |
| <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7069"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7070"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| User entries can hold membership information as attribute. |
| To use this the <fo:inline font-style="italic">attribute name</fo:inline> that holds the group information must be specified. |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7075"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| Group entries can hold a list of their members as attribute. |
| This can be used by specifying a <fo:inline font-style="italic">search context</fo:inline> and <fo:inline font-style="italic">search filter</fo:inline> to find all groups that the user should be considered a member of. |
| Typically this involves filtering groups by looking for the user's DN on a group attribute. |
| The <fo:inline font-style="italic">subtree search scope</fo:inline> determines whether the search should include the subtree extending from the <fo:inline font-style="italic">search context</fo:inline>. |
| </fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e7091"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to protect the security of the user's password, when using LDAP authentication, |
| you must: </fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7094"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7095"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Use SSL on the broker's AMQP and HTTP ports to protect the password during |
| transmission to the Broker. The Broker enforces this restriction automatically on AMQP |
| and HTTP ports.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7098"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Authenticate to the Directory using SSL (i.e. ldaps://) to protect the password |
| during transmission from the Broker to the Directory.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The LDAP Authentication Provider works in the following manner. If not in <fo:inline font-family="monospace">bind |
| without search</fo:inline> mode, it first connects to the Directory and searches for the ldap |
| entity which is identified by the username. The search begins at the distinguished name |
| identified by <fo:inline font-family="monospace">Search Context</fo:inline> and uses the username as a filter. The search |
| scope is sub-tree meaning the search will include the base object and the subtree extending |
| beneath it. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If the search returns a match, or is configured in <fo:inline font-family="monospace">bind without search</fo:inline> |
| mode, the Authentication Provider then attempts to bind to the LDAP server with the given name |
| and the password. Note that <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION)"><fo:inline>simple security |
| authentication</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION)">http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION</fo:basic-link>]</fo:inline> is used so the Directory receives the password in the clear. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| By default, this authentication provider caches the result of an authentication for a short period of time. This |
| reduces the load on the Directory service if the same credentials are presented frequently within a short |
| period of time. The length of time a result will be cached is defined by context variable |
| <fo:inline font-family="monospace">qpid.auth.cache.expiration_time</fo:inline> (default to 600 seconds). The cache can be disabled by |
| setting the context variable <fo:inline font-family="monospace">qpid.auth.cache.size</fo:inline> to 0. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-Kerberos-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Kerberos</fo:marker><fo:block font-size="17.28pt">8.1.2. Kerberos</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Kereberos Authentication Provider uses java GSS-API SASL mechanism to authenticate the |
| connections. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Configuration of kerberos is done through system properties (there doesn't seem to be a |
| way around this unfortunately). </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7133"> |
| export JAVA_OPTS=-Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=qpid.conf |
| ${QPID_HOME}/bin/qpid-server |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where qpid.conf would look something like this:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7137"> |
| com.sun.security.jgss.accept { |
| com.sun.security.auth.module.Krb5LoginModule required |
| useKeyTab=true |
| storeKey=true |
| doNotPrompt=true |
| realm="EXAMPLE.COM" |
| useSubjectCredsOnly=false |
| kdc="kerberos.example.com" |
| keyTab="/path/to/keytab-file" |
| principal="<name>/<host>"; |
| };</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Where realm, kdc, keyTab and principal should obviously be set correctly for the |
| environment where you are running (see the existing documentation for the C++ broker about |
| creating a keytab file). </fo:block><fo:block id="Java-Broker-Security-Kerberos-Provider-Spnego"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.1.2.1. SPNEGO Authentication</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) based authentication can be configured |
| for Web Management Console and REST API. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A special JAAS login configuration needs to be provided for |
| Service Principal Name (SPN) <fo:inline font-style="italic">HTTP/{FQDN}@REALM</fo:inline> in addition to configuration |
| provided for broker service principal in scope <fo:inline font-style="italic">com.sun.security.jgss.accept</fo:inline>. |
| An example of such SPNEGO configuration is provided below, </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7154"> |
| spnego { |
| com.sun.security.auth.module.Krb5LoginModule required |
| useKeyTab=true |
| storeKey=true |
| doNotPrompt=true |
| realm="EXAMPLE.COM" |
| useSubjectCredsOnly=false |
| kdc="kerberos.example.com" |
| keyTab="/path/to/keytab-file-for-HTTP-principal" |
| principal="HTTP/broker.org"; |
| };</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e7156"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please, note that in the example above a principal name is specified as |
| <fo:inline font-style="italic">HTTP/broker.org</fo:inline> where <fo:inline font-style="italic">broker.org</fo:inline> is supposed to be |
| a fully qualified name of the host where broker is running. The FQDN used to access the Broker |
| must match the host name in the SPN exactly otherwise the authentication will fail.</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A name of configuration module in the example above is <fo:inline font-style="italic">spnego</fo:inline>. It can be |
| communicated to the Kerberos authentication provider via context variable or JVM system property |
| <fo:inline font-style="italic">qpid.auth.gssapi.spnegoConfigScope</fo:inline>. For example, |
| |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7173"> |
| export QPID_OPTS=-Dqpid.auth.gssapi.spnegoConfigScope=spnego -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=qpid.conf |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The RELM part in name of authenticated principal logged with SPNEGO mechanism can be stripped by |
| setting context variable <fo:inline font-style="italic">qpid.auth.gssapi.spnegoStripRealmFromPrincipalName</fo:inline> to |
| <fo:inline font-style="italic">true</fo:inline>. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-OAuth2-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">OAuth2</fo:marker><fo:block font-size="17.28pt">8.1.3. OAuth2</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> This authentication provider allows users to login to the broker using credentials from a different service supporting OAuth2. |
| Unfortunately, the <fo:basic-link external-destination="url(https://www.rfc-editor.org/rfc/rfc6749.txt)"><fo:inline>OAuth2 specification</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://www.rfc-editor.org/rfc/rfc6749.txt)">https://www.rfc-editor.org/rfc/rfc6749.txt</fo:basic-link>]</fo:inline> does not define a standard why to get the identity of a subject from an access token. |
| However, most OAuth2 implementations provide such functionality, although in different ways. Qpid handles this by providing so called IdentityResolvers. |
| Currently the following services are supported: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7193"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7194"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>CloudFoundry</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7197"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Facebook</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7200"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>GitHub</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7203"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Google</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7206"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Microsoft Live</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| Since all of these, with the exception of CloudFoundry, are tied to a specific service they come with defaults for the Scope, Authorization-, Token-, and IdentityResolverEndpoint. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| By default, this authentication provider caches the result of an authentication for a short period of time. This |
| reduces the load on the OAuth2 service if the same token is presented frequently within a short |
| period of time. The length of time a result will be cached is defined by context variable |
| <fo:inline font-family="monospace">qpid.auth.cache.expiration_time</fo:inline> (default to 600 seconds). The cache can be disabled by |
| setting the context variable <fo:inline font-family="monospace">qpid.auth.cache.size</fo:inline> to 0. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-External-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">External (SSL Client Certificates)</fo:marker><fo:block font-size="17.28pt">8.1.4. External (SSL Client Certificates)</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> When <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores"><fo:inline> requiring SSL Client |
| Certificates</fo:inline></fo:basic-link> be presented the External Authentication Provider can be used, such that |
| the user is authenticated based on trust of their certificate alone, and the X500Principal |
| from the SSL session is then used as the username for the connection, instead of also |
| requiring the user to present a valid username and password. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-weight="bold">Note:</fo:inline> The External Authentication Provider should typically |
| only be used on the AMQP/HTTP ports, in conjunction with <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports"><fo:inline>SSL client certificate |
| authentication</fo:inline></fo:basic-link>. It is not intended for other uses and |
| will treat any non-sasl authentication processes on these ports as successful with the given |
| username.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On creation of External Provider the use of full DN or username CN as a principal name can |
| be configured. If attribute "Use the full DN as the Username" is set to "true" the full DN is |
| used as an authenticated principal name. If attribute "Use the full DN as the Username" is set |
| to "false" the user name CN part is used as the authenticated principal name. Setting the |
| field to "false" is particular useful when <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>ACL</fo:inline></fo:basic-link> is required, as at the moment, ACL does not support commas in the user name. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-Anonymous-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Anonymous</fo:marker><fo:block font-size="17.28pt">8.1.5. Anonymous</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Anonymous Authentication Provider will allow users to connect with or without |
| credentials and result in their identification on the broker as the user ANONYMOUS. This |
| Provider does not require specification of any additional attributes on creation. </fo:block></fo:block><fo:block id="Java-Broker-Security-ScramSha-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">SCRAM SHA</fo:marker><fo:block font-size="17.28pt">8.1.6. SCRAM SHA</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The SCRAM SHA Providers uses the Broker configuration itself to store the database of |
| users. The users' |
| passwords are stored as salted SHA digested password. This can be further encrypted using the |
| facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two variants of this provider, SHA1 and SHA256. SHA256 is recommended whenever |
| possible. SHA1 is provided with compatibility with clients utilising JDK 1.6 (which does not |
| support SHA256).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For these providers user credentials can be added, removed or changed using |
| Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-Plain-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Plain</fo:marker><fo:block font-size="17.28pt">8.1.7. Plain</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Plain Provider uses the Broker configuration itself to store the database of users |
| (unlike the <fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link>, there is no separate password file). As the name suggests, |
| the user data (including password) is not hashed in any way. In order to provide encryption, |
| the facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link> |
| must be used.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using |
| Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-PlainPasswordFile-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Plain Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:marker><fo:block font-size="17.28pt">8.1.8. Plain Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">This provider is deprecated and will be removed in a future release. The <fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>Plain</fo:inline></fo:basic-link> provider should be used |
| instead.</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The PlainPasswordFile Provider uses local file to store and manage user credentials. When |
| creating an authentication provider the path to the file needs to be specified. If specified |
| file does not exist an empty file is created automatically on Authentication Provider |
| creation. On Provider deletion the password file is deleted as well.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using |
| Management.</fo:block><fo:block id="d0e7287"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.1.8.1. Plain Password File Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The user credentials are stored on the single file line as user name and user |
| password pairs separated by colon character. This file must not be modified externally |
| whilst the Broker is running.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7292"> |
| # password file format |
| # <user name>: <user password> |
| guest:guest |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-MD5-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">MD5 Provider</fo:marker><fo:block font-size="17.28pt">8.1.9. MD5 Provider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> MD5 Provider uses the Broker configuration itself to store the database of |
| users (unlike the <fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>Base64MD5 Password File</fo:inline></fo:basic-link>, there is no separate password file). Rather than store the |
| unencrypted user password (as the Plain provider does) it instead stores the MD5 password |
| digest. This can be further encrypted using the |
| facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using |
| Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Base64MD5 Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:marker><fo:block font-size="17.28pt">8.1.10. Base64MD5 Password File <fo:inline font-style="italic">(Deprecated)</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">This provider is deprecated and will be removed in a future release. The |
| <fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5</fo:inline></fo:basic-link> provider should be used |
| instead.</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Base64MD5PasswordFile Provider uses local file to store and manage user credentials |
| similar to PlainPasswordFile but instead of storing a password the MD5 password digest encoded |
| with Base64 encoding is stored in the file. When creating an authentication provider the path |
| to the file needs to be specified. If specified file does not exist an empty file is created |
| automatically on Authentication Provider creation. On Base64MD5PasswordFile Provider deletion |
| the password file is deleted as well.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using |
| Management.</fo:block><fo:block id="d0e7323"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.1.10.1. Base64MD5 File Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The user credentials are stored on the single file line as user name and user password |
| pairs separated by colon character. The password is stored MD5 digest/Base64 encoded. This |
| file must not be modified externally whilst the Broker is running.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Composite-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Composite Provider</fo:marker><fo:block font-size="17.28pt">8.1.11. Composite Provider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Composite Provider uses existing username / password authentication providers allowing to perform authentication |
| against them in order defined. It can contains following authentication providers: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7334"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7335"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic"><fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5 Provider</fo:inline></fo:basic-link></fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7340"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic"><fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>Plain Provider</fo:inline></fo:basic-link></fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7345"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic"><fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers"><fo:inline>SCRAM SHA Providers</fo:inline></fo:basic-link></fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7350"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic"><fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider"><fo:inline>Simple LDAP Providers</fo:inline></fo:basic-link></fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When performing authentication, composite provider checks presence of a user with a given username in the first |
| delegate provider and if found, performs authentication. It should be considered, that in case of name collision |
| (when delegate providers contains users with same username but different passwords), it's not guaranteed that |
| authentication will succeed even with the correct credentials. Therefore username collision should be avoided, i.e. |
| each delegate provider should contain users with unique usernames.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e7358"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.1. SASL Mechanisms</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Authentication provider</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">SASL mechanisms</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Security-Composite-Provider-Delegate-SASL-Mechanisms-MD5"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5 Provider</fo:inline></fo:basic-link></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>PLAIN, CRAM-MD5-HASHED, CRAM-MD5-HEX</fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Security-Composite-Provider-Delegate-SASL-Mechanisms-Plain"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>Plain</fo:inline></fo:basic-link></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>PLAIN, CRAM-MD5, SCRAM-SHA-1, SCRAM-SHA-256</fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Security-Composite-Provider-Delegate-SASL-Mechanisms-ScramSha"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers"><fo:inline>SCRAM SHA Providers</fo:inline></fo:basic-link></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>PLAIN, SCRAM-SHA-1, SCRAM-SHA-256</fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Security-Composite-Provider-Delegate-SASL-Mechanisms-Simple-LDAP"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider"><fo:inline>Simple LDAP Providers</fo:inline></fo:basic-link></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>PLAIN</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Composite provider exposes intersection of SASL mechanism provided by its delegates.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Group-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Group Providers</fo:marker><fo:block font-size="20.735999999999997pt">8.2. Group Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Apache Qpid Broker-J utilises GroupProviders to allow assigning users to groups for use in |
| <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>ACLs</fo:inline></fo:basic-link> or <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>CLTs</fo:inline></fo:basic-link>. |
| Following authentication by a given <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Provider</fo:inline></fo:basic-link>, |
| the configured Group Providers are consulted allowing the assignment of GroupPrincipals for a given authenticated user. Any number of |
| Group Providers can be added into the Broker. All of them will be checked for the presence of the groups for a given authenticated user. |
| </fo:block><fo:block id="File-Group-Manager"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">GroupFile Provider</fo:marker><fo:block font-size="17.28pt">8.2.1. GroupFile Provider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The <fo:inline font-style="italic">GroupFile</fo:inline> Provider allows specifying group membership in a flat file on disk. |
| On adding a new GroupFile Provider the path to the groups file is required to be specified. |
| If file does not exist an empty file is created automatically. On deletion of GroupFile Provider |
| the groups file is deleted as well. Only one instance of "GroupFile" Provider per groups file location can be created. |
| On attempt to create another GroupFile Provider pointing to the same location the error will be displayed and |
| the creation will be aborted. |
| </fo:block><fo:block id="File-Group-Manager-FileFormat"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.2.1.1. File Format</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The groups file has the following format: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7425"> |
| # <GroupName>.users = <comma delimited user list> |
| # For example: |
| |
| administrators.users = admin,manager |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Only users can be added to a group currently, not other groups. Usernames can't contain commas. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Lines starting with a '#' are treated as comments when opening the file, but these are not preserved when the broker updates the file due to changes made through the management interface. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Group-Providers-ManagedGroupProvider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">ManagedGroupProvider</fo:marker><fo:block font-size="17.28pt">8.2.2. ManagedGroupProvider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The <fo:inline font-style="italic">ManagedGroupProvider</fo:inline> allows specifying group membership as part of broker configuration. |
| In future version of Brokers GroupFile Provider will be replaced by this one. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-Group-Providers-CloudFoundry"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">CloudFoundryDashboardManagementGroupProvider</fo:marker><fo:block font-size="17.28pt">8.2.3. CloudFoundryDashboardManagementGroupProvider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The <fo:inline font-style="italic">CloudFoundryDashboardManagementGroupProvider</fo:inline> |
| allows mapping of service instance ids to qpid management groups. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| One use case is restricting management capabilities of a OAuth2 authenticated user to certain virtual |
| hosts. For this, one would associate a cloudfoundry service id with each virtual host and have an ACL with a |
| separate management group for each virtual host. Given the correct service instance id to |
| management group mapping the GroupProvider will then associate the user with each management group the user |
| is provisioned to manage the associated service instance in the <fo:basic-link external-destination="url(http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-permissions)"><fo:inline>CloudFoundry dashboard</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-permissions)">http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-permissions</fo:basic-link>]</fo:inline>. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Access Control Providers</fo:marker><fo:block font-size="20.735999999999997pt">8.3. Access Control Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Access Control Provider governs the actions that a user may perform. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two points within the hierarchy that enforce access control: the Broker itself and at each Virtual |
| Host. When an access decision needs to be made, the nearest control point configured with a provider is consulted |
| for a decision. The example, when making a decision about the ability to say, consume from, a Queue, if the |
| Virtual Host is configured with Access Control Provider it is consulted. Unless a decision is made, the decision |
| is delegated to the Access Control Provider configured at the Broker. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Access Control Providers are configured with a list of ACL rules. The rules determine to which objects |
| the user has access and what actions the user may perform on those objects. Rules are ordered and are considered |
| top to bottom. The first matching rule makes the access decision. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| ACL rules may be written in terms of user or group names. A rule written in terms of a group name applies to the |
| user if he is a member of that group. Groups information is obtained from the |
| <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link> |
| and |
| <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Group Providers</fo:inline></fo:basic-link>. Writing ACL in terms of groups is |
| recommended. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Access Control Providers can be configured using |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST Management interfaces</fo:inline></fo:basic-link> |
| and <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>. |
| </fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">8.3.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are currently two types of Access Control Provider implementing ACL rules. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7483"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7484"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">RulesBased</fo:inline> - a provider that stores the rules-set within |
| the Broker's or VirtualHost's configuration. When used with HA, the Virtualhost |
| rules automatically propagated to all nodes participating within the HA group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7489"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">ACLFile</fo:inline> - an older provider that references an externally provided |
| ACL file (or data url). This provider is deprecated.</fo:block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-ACLRules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| ACL Rules |
| </fo:marker><fo:block font-size="17.28pt">8.3.2. |
| ACL Rules |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| An ACL rule-set is an ordered list of ACL rules.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An ACL rule comprises matching criteria that determines if a rule applies to a situation and a decision |
| outcome. The rule produces an outcome only if the all matching criteria are satisfied. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Matching criteria is composed of an ACL object type (e.g. <fo:inline font-family="monospace">QUEUE</fo:inline>), an ACL action |
| (e.g. <fo:inline font-family="monospace">UPDATE</fo:inline>) and other properties that further refine if a match is made. These properties |
| restrict the match based on additional criteria such as name or IP address. ACL Object type <fo:inline font-family="monospace">ALL</fo:inline> |
| matches any object. Likewise ACL Action <fo:inline font-family="monospace">ALL</fo:inline> matches any action. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's look at some examples.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7521"> |
| ACL ALLOW alice CREATE QUEUE # Grants alice permission to create all queues. |
| ACL DENY bob CREATE QUEUE name="myqueue" # Denies bob permission to create a queue called "myqueue" |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| As discussed, the ACL rule-set is considered in order with the first matching rule taking precedence over all those |
| that follow. In the following example, if the user bob tries to create an exchange "myexch", the action |
| will be allowed by the first rule. The second rule will never be considered. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7525"> |
| ACL ALLOW bob ALL EXCHANGE |
| ACL DENY bob CREATE EXCHANGE name="myexch" # Dead rule |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If the desire is to allow bob to create all exchanges except "myexch", order of the rules must be reversed: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7529"> |
| ACL DENY bob CREATE EXCHANGE name="myexch" |
| ACL ALLOW bob ALL EXCHANGE |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If a rule-set fails to make a decision, the result is configurable. By default, the <fo:inline font-family="monospace">RuleBased</fo:inline> |
| provider defers the decision allowing another provider further up the hierarchy to make a decision (i.e. allowing |
| the VirtualHost control point to delegate to the Broker). In the case of the ACLFile provider, by default, its |
| rule-set implicit have a rule denying all operations to all users. It is as if the rule-set ends with |
| <fo:inline font-family="monospace">ACL DENY ALL ALL</fo:inline>. If no access control provider makes a decision the default is to |
| deny the action. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When writing a new ACL, a useful approach is to begin with an rule-set containing only |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7541">ACL DENY-LOG ALL ALL</fo:block> at the Broker control point which will cause the Broker to |
| deny all operations with details of the denial logged. Build up the ACL rule by rule, gradually working through |
| the use-cases of your system. Once the ACL is complete, consider switching the DENY-LOG actions to DENY. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| ACL rules are very powerful: it is possible to write very granular rules specifying many broker objects and their |
| properties. Most projects probably won't need this degree of flexibility. A reasonable approach is to choose to apply permissions |
| at a certain level of abstractions and apply them consistently across the whole system. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| Syntax |
| </fo:marker><fo:block font-size="17.28pt">8.3.3. |
| Syntax |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| ACL rules follow this syntax: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7551"> |
| ACL {permission} {<group-name>|<user-name>|ALL} {action|ALL} [object|ALL] [property=<property-values>] |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The <property-values> can be a single value property="single value" or a list of comma separated values in brackets |
| property=["value1", "value2", "value3"]. If a property repeats then it will be interpreted as list of values, |
| for example name="n1" name="n2" name="n3" is interpreted as name=["n1", "n2", "n3"]. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Comments may be introduced with the hash (#) character and are ignored. Long lines can be broken with the slash (\) character. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7557"> |
| # A comment |
| ACL ALLOW admin CREATE ALL # Also a comment |
| ACL DENY guest \ |
| ALL ALL # A broken line |
| </fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-AccessControlProviders-Syntax_permissions"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.2. List of ACL permission</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">ALLOW</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allow the action</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">ALLOW-LOG</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Allow the action and log the action in the log </fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">DENY</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Deny the action</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">DENY-LOG</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Deny the action and log the action in the log</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-AccessControlProviders-Syntax_actions"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.3. List of ACL actions</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-column column-number="4" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Action</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Description</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Supported object types</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Supported properties</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">CONSUME</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when subscriptions are created </fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">QUEUE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, autodelete, temporary, durable, exclusive, alternate, owner, virtualhost_name</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">PUBLISH</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied on a per message basis on publish message transfers</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">EXCHANGE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, routingkey, virtualhost_name</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">CREATE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when an object is created, such as bindings, queues, exchanges</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">see properties on the corresponding object type</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">ACCESS</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when a connection is made for messaging or management</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VIRTUALHOST, MANAGEMENT</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name (for VIRTUALHOST only)</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">BIND</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when queues are bound to exchanges</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">EXCHANGE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, routingKey, queue_name, virtualhost_name, temporary, durable</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">UNBIND</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when queues are unbound from exchanges</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">EXCHANGE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, routingKey, queue_name, virtualhost_name, temporary, durable</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">DELETE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when objects are deleted </fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">see properties on the corresponding object type</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">PURGE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applied when the contents of a queue is purged</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">QUEUE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> </fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">UPDATE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when an object is updated </fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">see EXCHANGE and QUEUE properties</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">CONFIGURE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Applied when a Broker/Port/Authentication Provider/Access Control Provider/BrokerLogger is created/update/deleted.</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BROKER</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> </fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">ACCESS_LOGS</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allows/denies the specific user to download log file(s).</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BROKER, VIRTUALHOST</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name (for VIRTUALHOST only)</fo:block></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">SHUTDOWN</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allows/denies the specific user to shutdown the Broker.</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BROKER</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"/></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">INVOKE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allows/denies the specific user to invoke the named operation.</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BROKER, VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">method_name, name and virtualhost_name</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-AccessControlProviders-Syntax_objects"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.4. List of ACL objects</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-column column-number="4" column-width="proportional-column-width(1)"/><fo:table-column column-number="5" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Object type</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Description</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Supported actions</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Supported properties</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allowed in Virtualhost ACLs?</fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">VIRTUALHOSTNODE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhostnode or remote replication node</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CREATE, UPDATE, DELETE, INVOKE</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">No</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">VIRTUALHOST</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CREATE, UPDATE, DELETE, ACCESS, ACCESS_LOGS, INVOKE</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, connection_limit, connection_frequency_limit</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">No</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">QUEUE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue </fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CREATE, DELETE, PURGE, CONSUME, UPDATE, INVOKE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, autodelete, temporary, durable, exclusive, alternate, owner, virtualhost_name</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Yes</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">EXCHANGE</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An exchange</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, ACCESS, CREATE, DELETE, BIND, UNBIND, PUBLISH, UPDATE, INVOKE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name, autodelete, temporary, durable, type, virtualhost_name, queue_name(only for BIND and UNBIND), routingkey(only for BIND and UNBIND, PUBLISH)</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Yes</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">USER</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A user</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CREATE, DELETE, UPDATE, INVOKE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">No</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">GROUP</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A group</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CREATE, DELETE, UPDATE, INVOKE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">name</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">No</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">BROKER</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The broker</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ALL, CONFIGURE, ACCESS_LOGS, INVOKE</fo:block></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"/></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">No</fo:block> </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-AccessControlProviders-Syntax_properties"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.5. List of ACL properties</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">name</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. Object name, such as a queue name or exchange name.</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">durable</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Boolean. Indicates the object is durable </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">routingkey</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. Specifies routing key </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">autodelete</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Boolean. Indicates whether or not the object gets deleted when the connection is closed </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">exclusive</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Boolean. Indicates the presence of an <fo:inline font-family="monospace" font-style="italic">exclusive</fo:inline> flag </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">temporary</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Boolean. Indicates the presence of an <fo:inline font-family="monospace" font-style="italic">temporary</fo:inline> flag </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">type</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. Type of object, such as topic, or fanout</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">alternate</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. Name of the alternate exchange </fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">queue_name</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. Name of the queue (used only when the object is EXCHANGE for BIND and UNBIND actions)</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">component</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> String. component name</fo:block> </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">from_network</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Comma-separated strings representing IPv4 address ranges. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The rule matches if any of the address ranges match the IPv4 address of the messaging client. |
| The address ranges are specified using either Classless Inter-Domain Routing notation |
| (e.g. 192.168.1.0/24; see <fo:basic-link external-destination="url(http://tools.ietf.org/html/rfc4632)"><fo:inline>RFC 4632</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://tools.ietf.org/html/rfc4632)">http://tools.ietf.org/html/rfc4632</fo:basic-link>]</fo:inline>) |
| or wildcards (e.g. 192.169.1.*). |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">from_hostname</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Comma-separated strings representing hostnames, specified using Perl-style regular |
| expressions, e.g. .*\.example\.company\.com |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The rule matches if any of the patterns match the hostname of the messaging client. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To look up the client's hostname, Qpid uses Java's DNS support, which internally caches its results. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| You can modify the time-to-live of cached results using the *.ttl properties described on the |
| Java <fo:basic-link external-destination="url(http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html)"><fo:inline>Networking |
| Properties</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html)">http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html</fo:basic-link>]</fo:inline> page. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For example, you can either set system property sun.net.inetaddr.ttl from the command line |
| (e.g. export QPID_OPTS="-Dsun.net.inetaddr.ttl=0") or networkaddress.cache.ttl in |
| $JAVA_HOME/lib/security/java.security. The latter is preferred because it is JVM |
| vendor-independent. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">virtualhost_name</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| String. A name of virtual host to which the rule is applied. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">method_name</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| String. The name of the method. A trailing wildcard (*) is permitted. Used with INVOKE ACL action. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">attribute_names</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Specifies attribute name criteria. Used by UPDATE ACL actions only. Rules with this criteria will match |
| if and only if the set of attributes being updated Comma separated list of attribute names . This criteria |
| will match if all attributes included within the update appear in the set described by |
| <fo:inline font-family="monospace">attribute_names</fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExamples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| Worked Examples |
| </fo:marker><fo:block font-size="17.28pt">8.3.4. |
| Worked Examples |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Here are some example ACLs illustrating common use cases. |
| </fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample1"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.3.4.1. |
| Worked example 1 - Management rights |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Suppose you wish to permission two users: a user <fo:inline font-family="monospace">operator</fo:inline> must be able to perform all |
| Management operations, and a user 'readonly' must be enable to perform only read-only actions. Neither |
| <fo:inline font-family="monospace">operator</fo:inline> nor <fo:inline font-family="monospace">readonly</fo:inline> should be allowed to connect clients for |
| messaging. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8226"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.1. Worked example 1 - Management rights</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8229"> |
| # Deny operator/readonly permission to connect for messaging. |
| ACL DENY-LOG operator ACCESS VIRTUALHOST |
| ACL DENY-LOG readonly ACCESS VIRTUALHOST |
| # Give operator permission to perfom all actions |
| ACL ALLOW operator ALL ALL |
| # Give readonly access permission to virtualhost. (Read permission for all objects implicit) |
| ACL ALLOW readonly ACCESS MANAGEMENT |
| ... |
| ... rules for other users |
| ... |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample2"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.3.4.2. |
| Worked example 2 - Simple Messaging |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Suppose you wish to permission a system for application messaging. User <fo:inline font-family="monospace">publisher</fo:inline> |
| needs permission to publish to <fo:inline font-family="monospace">appqueue</fo:inline> and consumer needs permission to consume |
| from the same queue object. We also want <fo:inline font-family="monospace">operator</fo:inline> to be able to inspect messages |
| and delete messages in case of the need to intervene. This example assumes that the queue exists on |
| the Broker. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| We use this ACL to illustrate separate Broker and Virtualhost access control providers. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The following ACL rules are given to the Broker. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8249"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.2. Worked example 2a - Simple Messaging - Broker ACL rules</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8252"> |
| # This gives the operate permission to delete messages on all queues on all virtualhost |
| ACL ALLOW operator ACCESS MANAGEMENT |
| ACL ALLOW operator INVOKE QUEUE method_name="deleteMessages" |
| ACL ALLOW operator INVOKE QUEUE method_name="getMessage*" |
| </fo:block></fo:block></fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8254"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.3. Worked example 2b - Simple Messaging - Broker ACL rules with multi-value property</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8257"> |
| # This gives the operate permission to delete messages on all queues on all virtualhost |
| ACL ALLOW operator ACCESS MANAGEMENT |
| ACL ALLOW operator INVOKE QUEUE method_name=["deleteMessages", "getMessage*"] |
| </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| And the following ACL rule-set is applied to the Virtualhost. The default outcome of the |
| Access Control Provider must be <fo:inline font-family="monospace">DEFERED</fo:inline>. This means that if a request for |
| access is made for which there are no matching rules, the decision will be deferred to the |
| Broker so it can make a decision instead. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8264"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.4. Worked example 2 - Simple Messaging - Virtualhost ACL rules</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8267"> |
| # Configure the rule-set to DEFER decisions that have no matching rules. |
| CONFIG DEFAULTDEFER=TRUE |
| # Allow client and server to connect to the virtual host. |
| ACL ALLOW publisher ACCESS VIRTUALHOST |
| ACL ALLOW consumer ACCESS VIRTUALHOST |
| |
| ACL ALLOW publisher PUBLISH EXCHANGE name="" routingKey="appqueue" |
| ACL ALLOW consumer CONSUME QUEUE name="appqueue" |
| # In some addressing configurations, the Qpid JMS AMQP 0-x client, will declare the queue as a side effect of creating the consumer. |
| # The following line allows for this. For the Qpid JMS AMQP 1.0 client, this is not required. |
| ACL ALLOW consumer CREATE QUEUE name="appqueue" |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample3"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">8.3.4.3. |
| Worked example 3 - firewall-like access control |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This example illustrates how to set up an ACL that restricts the IP addresses and hostnames |
| of messaging clients that can access a virtual host. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8274"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.5. Worked example 3 - firewall-like access control</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8277"> |
| ################ |
| # Hostname rules |
| ################ |
| |
| # Allow messaging clients from company1.com and company1.co.uk to connect |
| ACL ALLOW all ACCESS VIRTUALHOST from_hostname=".*\.company1\.com,.*\.company1\.co\.uk" |
| |
| # Deny messaging clients from hosts within the dev subdomain |
| ACL DENY-LOG all ACCESS VIRTUALHOST from_hostname=".*\.dev\.company1\.com" |
| |
| ################## |
| # IP address rules |
| ################## |
| |
| # Deny access to all users in the IP ranges 192.168.1.0-192.168.1.255 and 192.168.2.0-192.168.2.255, |
| # using the notation specified in RFC 4632, "Classless Inter-domain Routing (CIDR)" |
| ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \ |
| from_network="192.168.1.0/24,192.168.2.0/24" |
| |
| # Deny access to all users in the IP ranges 192.169.1.0-192.169.1.255 and 192.169.2.0-192.169.2.255, |
| # using wildcard notation. |
| ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \ |
| from_network="192.169.1.*,192.169.2.*" |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Connection Limit Providers</fo:marker><fo:block font-size="20.735999999999997pt">8.4. Connection Limit Providers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Connection Limit Provider governs the limits of connections that an user can simultaneously open. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two points within the hierarchy that enforce connection limits: the Broker itself and at each |
| Virtual Host. When a limit needs to be checked, every check point configured with a provider is consulted |
| for a decision. The example, when making a decision about the opening a new connection. If the Virtual Host is |
| configured with Connection Limit Provider then the limits are checked. Unless the connection is rejected, |
| the decision is delegated to the Connection Limit Provider configured at the Broker. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection Limit Provider is configured with a set of CLT (connection limit) rules. The rules determine |
| the limit of open connections, how many connections can user open on the |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>AMQP Ports</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| CLT rules may be written in terms of user or group names. A rule written in terms of a group name applies to the |
| user if he is a member of that group. Groups information is obtained from the |
| <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link> |
| and <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Group Providers</fo:inline></fo:basic-link>. Writing CLT rules in terms of |
| user names is recommended. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Connection Limit Providers can be configured using |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST Management interfaces</fo:inline></fo:basic-link> |
| and <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>. |
| </fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types</fo:marker><fo:block font-size="17.28pt">8.4.1. Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are currently two types of Connection Limit Provider implementing CLT rules. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8313"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8314"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:inline font-style="italic">RulesBased</fo:inline> |
| - a provider that stores the rule-set within the Broker's or VirtualHost's configuration. |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8320"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">ConnectionLimitFile</fo:inline> |
| - a provider that references an externally provided CLT file (or data url). |
| </fo:block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Rules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| Connection Limit Rules |
| </fo:marker><fo:block font-size="17.28pt">8.4.2. |
| Connection Limit Rules |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An CLT rule is composed of an user or group identification, AMQP port name and connection limits. |
| Let's look at some example. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8335"> |
| # Limits simultaneously open connection by alice on brokerAmqp port up to 10. |
| CLT alice port=brokerAmqp connection_count=10 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If there is multiple rules for given user (or group) then the rules are merge into a single most |
| restrictive rule. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8339"> |
| CLT alice port=brokerAmqp connection_count=10 |
| CLT alice port=brokerAmqp connection_count=12 connection_frequency_count=60/1m |
| CLT alice port=brokerAmqp connection_frequency_count=100/1m |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The previous rules will be merge into a single effective rule.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8343"> |
| CLT alice port=brokerAmqp connection_count=10 connection_frequency_count=60/1m |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The rules are applied in following order:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e8347"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8348"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The effective rule for given user.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8351"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The effective rule for given set of groups that user is a member of.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8354"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The default rule, a rule with the user ALL that matches any user.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">At the first broker looks for a rule for given user. If any rule is not found then broker will look for |
| the group rules. If any group rule is not found then broker will look for a default rule. An user without |
| any rule is not restricted. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| Syntax |
| </fo:marker><fo:block font-size="17.28pt">8.4.3. |
| Syntax |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Connection limit rules follow this syntax: |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8364"> |
| CLT {<user-name>|<group-name>|ALL} [BLOCK] [port=<AMQP-port-name>|ALL] [property="<property-value>"] |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A rule with user name ALL is default rule. Likewise a rule with port=ALL is applied to all ports. |
| The parameter BLOCK is optional and marks user or group that is not allowed to connect on the port. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Comments may be introduced with the hash (#) character and are ignored. A line can be broken with the slash |
| (\) character. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8370"> |
| # A comment |
| CLT alice port=brokerAMQP connection_limit=10 # Also a comment |
| CLT mark port=brokerAMQP \ # A broken line |
| connection_limit=10 \ |
| connection_frequency_limit=60/1m |
| CLT ALL BLOCK # A default rule |
| </fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-ConnectionLimitProviders-Syntax_properties"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 8.6. List of connection limit (CLT) properties</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:inline font-weight="bold">connection_limit</fo:inline> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Integer. A maximum number of connections the messaging user can establish to the Virtual |
| Host on AMQP port. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Alternatives: connection-limit, connectionLimit. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:inline font-weight="bold">connection_frequency_limit</fo:inline> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A maximum number of connections the messaging user can establish to the Virtual Host |
| on AMQP port within defined period of time, which is 1 minute by default. |
| The connection frequency limit is specified in the format: limit/period, where time |
| period is written as xHyMz.wS - x hours, y minutes and z.w seconds. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In case of time period 1 hour/minute/second the digit 1 can be omitted, |
| for example: 7200/H or 120/M or 2/S. |
| (7200/H is not the same frequency limit as 120/H or 2/S). |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If the period is omitted then the default frequency period is used. |
| If required, the default frequency period can be changed using CONFIG command. |
| See an example below. Setting it to zero or negative value turns off the connection |
| frequency evaluation. |
| </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Alternatives: connection-frequency-limit, connectionFrequencyLimit. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:inline font-weight="bold">port</fo:inline> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| String. The AMQP port name, ALL is the default value. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The default time period for frequency limit can be set up with the <fo:inline font-family="monospace">CONFIG</fo:inline> command. |
| Default frequency period is specified in ms. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8429"> |
| CONFIG default_frequency_period=60000 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| default-frequency-period and defaultFrequencyPeriod are valid alternatives to the default_frequency_period. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The default frequency period may be specified as context variable |
| <fo:inline font-family="monospace">qpid.broker.connectionLimiter.frequencyPeriodInMillis</fo:inline>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Broker logs rejected connections when an user breaks the limit. But the Broker could also log |
| the accepted connections with current counter value. The full logging could be turn on with |
| <fo:inline font-family="monospace">CONFIG</fo:inline> command. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8443"> |
| CONFIG log_all=true default_frequency_period=60000 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| log-all and logAll are valid alternatives to the log_all. |
| </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker"> |
| Worked Example |
| </fo:marker><fo:block font-size="17.28pt">8.4.4. |
| Worked Example |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Here are some example of connection limits illustrating common use cases. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Suppose you wish to restrict two users: a user <fo:inline font-family="monospace">operator</fo:inline> can establish at the most 50 |
| connections on any port. A user <fo:inline font-family="monospace">publisher</fo:inline> can establish 30 new connection per two minutes |
| but at the most 20 parallel connections on <fo:inline font-family="monospace">amqp</fo:inline> port. Another users should be blocked. |
| </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8463"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 8.6. CLT file example</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8466"> |
| # Limit operator |
| CLT operator connection_limit=50 |
| # Limit publisher |
| CLT publisher port=amqp connection_frequency_limit=30/2M connection_limit=20 |
| # Block all users by default |
| CLT ALL BLOCK |
| |
| </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Configuration-Encryption"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuration Encryption</fo:marker><fo:block font-size="20.735999999999997pt">8.5. Configuration Encryption</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The Broker is capable of encrypting passwords and other security items stored in the |
| Broker's configuration. This is means that items such as keystore/truststore passwords, JDBC |
| passwords, and LDAP passwords can be stored in the configuration in a form that is difficult to |
| read.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker ships with an encryptor implementations called <fo:inline font-family="monospace">AESGCMKeyFile</fo:inline> and |
| <fo:inline font-family="monospace">AESKeyFile</fo:inline>. This uses a securely generated random key of 256bit |
| <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>Java Cryptography Extension (JCE) Unlimited Strength required</fo:block></fo:footnote-body></fo:footnote> |
| to encrypt the secrets stored within a key file. Of course, the key itself must be guarded carefully, |
| otherwise the passwords encrypted with it may be compromised. For this reason, the Broker ensures |
| that the file's permissions allow the file to be read exclusively by the user account used for running |
| the Broker.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8486"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">AESKeyFile encryptor is considered as not safe, it is deprecated and will be removed in one of the |
| next releases. AESGCMKeyFile encryptor should be used instead.</fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8489"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the keyfile is lost or corrupted, the secrets will be irrecoverable.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Configuration-Encryption-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block font-size="17.28pt">8.5.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">AESGCMKeyFile</fo:inline> or <fo:inline font-family="monospace">AESKeyFile</fo:inline> encryptor providers are |
| enabled/disabled via the <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker"><fo:inline>Broker attributes</fo:inline></fo:basic-link> |
| within the Web Management Console. On enabling the provider, any existing passwords within the |
| configuration will be automatically rewritten in the encrypted form.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Note that passwords stored by the Authentication Providers <fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link> and. |
| <fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link> |
| with the external password files are <fo:inline font-style="italic">not</fo:inline> encrypted by the key. Use the |
| Scram Authentication Managers instead; these make use of the Configuration Encryption when |
| storing the users' passwords. </fo:block></fo:block><fo:block id="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Alternate Implementations</fo:marker><fo:block font-size="17.28pt">8.5.2. Alternate Implementations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the <fo:inline font-family="monospace">AESGCMKeyFile</fo:inline> encryptor implementation does not meet the needs of |
| the user, perhaps owing to the security standards of their institution, the |
| <fo:inline font-family="monospace">ConfigurationSecretEncrypter</fo:inline> interface is designed as an extension point. |
| Users may implement their own implementation of ConfigurationSecretEncrypter perhaps to employ |
| stronger encryption or delegating the storage of the key to an Enterprise Password |
| Safe.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Runtime</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Runtime</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Runtime"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 9. Runtime</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Logging</fo:marker><fo:block font-size="20.735999999999997pt">9.1. Logging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes the flexible logging capabilities of the Apache Qpid Broker-J.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8540"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8541"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The Broker is capable of sending logging events to a variety of destinations including |
| plain files, remote syslog daemons, and an in-memory buffer (viewable from Management). |
| The system is also open for extension meaning it is possible to produce a plugin to log to |
| a bespoke destination.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8544"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Logging can be dynamically configured at runtime. For instance, it is possible to |
| temporarily increase the logging verbosity of the system whilst a problem is investigated |
| and then revert later, all without the need to restart the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8547"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Virtualhosts can be configured to generate their own separate log, and the Broker is |
| capable of generating a log either inclusive or exclusive of virtualhost events.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8550"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Logs are accessible over Management, removing the need for those operating the Broker |
| to have shell level access.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the remainder of this section you will first find a description of the concepts used in |
| the logging subsystem. Next, you find a description of the default configuration. The section |
| then concludes with a in-depth description of the loggers themselves and how they may be |
| configured.</fo:block><fo:block id="Java-Broker-Runtime-Logging-Concepts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Concepts</fo:marker><fo:block font-size="17.28pt">9.1.1. Concepts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The logging subsystem uses two concepts:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8563"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8564"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>A <fo:inline font-style="italic">Logger</fo:inline> is responsible for production of a log. The Broker |
| ships a variety of loggers, for instance, a file logger, which is capable of writing a |
| log file to the file system, a Syslog Logger capable of writing to a remote syslog |
| daemon and console logger capable of writing to stdout or stderr.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers are attached at two points within the Broker Model; the Broker itself and |
| the virtualhosts. Loggers attached at the Broker can capture log events for the system |
| as a whole, or can exclude events related to virtualhosts.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers attached to a virtualhost capture log events relating to that virtualhost |
| only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker and virtualhosts can have zero or more Loggers. If no loggers are |
| configured, no logging is generated at all.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8576"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Inclusion rules</fo:inline> govern what appears within a log. Inclusion |
| rules are associated with Loggers. This means it is possible for different Loggers to |
| have different contents.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A Logger with no inclusion rules will produce an empty log.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Default-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Default Configuration</fo:marker><fo:block font-size="17.28pt">9.1.2. Default Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The default configuration is designed to be suitable for use without change in small |
| production environments. It has the following characteristics:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8591"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8592"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The Broker generates a single log file <fo:inline font-family="monospace">qpid.log</fo:inline>. This logfile is |
| rolled automatically when the file reaches 100MB. A maximum history of one file is |
| retained. On restart the the log will be appended to.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log contains: <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8600"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>All operational logging events. See <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging"><fo:inline>Appendix C, <fo:inline font-style="italic">Operational Logging</fo:inline></fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8606"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Log events from Qpid itself deemed informational or |
| higher.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8609"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Log events from Qpid's dependencies (such as Derby or Jetty) that are |
| deemed warning or higher.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The default location for the log file is |
| <fo:inline font-family="monospace">${QPID_WORK}/log/qpid.log</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8618"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The Broker also caches the last 4096 log events in a memory cache. By default, the |
| memory logger logs the same things the file logger does.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The configuration can be customised at runtime using Management. This makes it possible to |
| investigate unusual conditions <fo:inline font-style="italic">without</fo:inline> the need to restart the Broker. |
| For instance, you may alter the logging level so that a verbose log is produced whilst an |
| investigation is in progress and revert the setting later, all without the need to restart the |
| Broker.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Loggers</fo:marker><fo:block font-size="17.28pt">9.1.3. Loggers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers are responsible for the writing of a log. The log includes log events that match a |
| Logger's inclusion rules.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers are associated with either the Broker or a virtualhost. Virtualhost loggers write |
| only log events related to that virtualhost. Broker Loggers write log events from the Broker |
| as a whole. Optionally a Broker Logger can be configured to exclude log events coming from |
| virtualhosts. These abilities can be usefully exploited together in managed service scenarios |
| to produce separate logs for separate user groups.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers can be added or removed at runtime, without restarting the Broker. However changes |
| to a Logger's configuration such as filenames and rolling options don't take effect until the |
| next restart. Changes to a Logger's inclusion rules take effect immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All loggers allow the log event layout to be customised. Loggers understand <fo:basic-link external-destination="url(http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout)"><fo:inline> Logback Classic |
| Pattern Layouts</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout)">http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout</fo:basic-link>]</fo:inline>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following sections describes each Logger implementation in detail.</fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-FileLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.1.3.1. FileLogger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">FileLogger</fo:inline> - writes a log file to the filesystem. The name and |
| location of the log file, the rolling configuration, and compression options can be |
| configured.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">roll daily</fo:inline> option, if enabled, will cause the log file will be |
| rolled at midnight local time. The rolled over file will have a suffix in the form |
| <fo:inline font-family="monospace">yyyy-mm-dd</fo:inline>. In roll daily mode, <fo:inline font-style="italic">maximum number of rolled |
| files</fo:inline> controls the maximum number of <fo:inline font-style="italic">days</fo:inline> to be retained. |
| Older files will be deleted.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">maximum file size</fo:inline> option limits the size of any one log file. |
| Once a log file reaches the given size, it will be rolled. The rolled over file will have |
| the numeric suffix, beginning at <fo:inline font-family="monospace">1</fo:inline>. If the log file rolls again, first |
| the existing file with the suffix <fo:inline font-family="monospace">.1</fo:inline> is renamed to <fo:inline font-family="monospace">.2</fo:inline> |
| and so forth. If roll daily is not in use, <fo:inline font-style="italic">maximum number of rolled |
| files</fo:inline> governs the number of rolled <fo:inline font-style="italic">files</fo:inline> that will be |
| retained.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Roll on restart</fo:inline> governs whether the log file is rolled when the |
| Broker is restarted. If not ticked, the Broker will append to the existing log file until it |
| needs to be rolled.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-ConsoleLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.1.3.2. ConsoleLogger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">ConsoleLogger</fo:inline> - writes a log file standard out or standard |
| error.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-SyslogLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.1.3.3. SyslogLogger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">SyslogLogger</fo:inline> - writes a log file to a syslog daemon using the |
| <fo:inline font-family="monospace">USER</fo:inline> facility. The hostname and port number of the syslog daemon can be |
| configured.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Log entries can be prefixed with a string. This string defaults to include the word |
| <fo:inline font-family="monospace">Qpid</fo:inline> and the name of the Broker or virtualhost. This serves to |
| distinguish the logging generated by this Qpid instance, from other Qpid instances, or other |
| applications using the <fo:inline font-family="monospace">USER</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-MemoryLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.1.3.4. MemoryLogger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">MemoryLogger</fo:inline> - writes a log file to a circular in-memory buffer. By |
| default the circular buffer holds the last 4096 log events. The contents of the buffer can |
| be viewed via Management. See <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-MemoryLogger"><fo:inline>Figure 9.3, “Viewing a memory logger”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-GraylogLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.1.3.5. GraylogLogger</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">GraylogLogger</fo:inline> - sends log messages to a Graylog server in |
| <fo:basic-link external-destination="url(https://docs.graylog.org/en/3.2/pages/gelf.html)"><fo:inline>GELF format</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.graylog.org/en/3.2/pages/gelf.html)">https://docs.graylog.org/en/3.2/pages/gelf.html</fo:basic-link>]</fo:inline> via TCP. |
| The hostname and port number of the Graylog server has to be configured. The content of the log messages |
| is also configurable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The logger is implemented on top of LGPL licenced library <fo:inline font-family="monospace">de.siegmar:logback-gelf</fo:inline>. |
| The LGPL license is incompatible with Apache License. Thus, the Graylog integration module is not included |
| into standard broker distribution. It has to be built using option <fo:inline font-family="monospace">-Dgraylog</fo:inline>. The built jar |
| <fo:inline font-family="monospace">org.apache.qpid:qpid-broker-plugins-graylog-logging-logback</fo:inline> and |
| <fo:inline font-family="monospace">de.siegmar:logback-gelf</fo:inline> jar should be copied manually under broker |
| <fo:inline font-family="monospace">lib</fo:inline> folder. The broker restart is required to have <fo:inline font-style="italic">GraylogLogger</fo:inline> |
| available for the use. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-InclusionRules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Inclusion Rules</fo:marker><fo:block font-size="17.28pt">9.1.4. Inclusion Rules</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">Logger</fo:inline> has one or more <fo:inline font-style="italic">inclusion rules</fo:inline>. These |
| govern what appears in the log. A Logger with no inclusion rules will log nothing.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Inclusion rules can be added, removed or changed at runtime. Changes take place |
| immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8767"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8768"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The <fo:inline font-style="italic">Name And Level</fo:inline> inclusion rule accepts log events that match |
| a given <fo:inline font-style="italic">log event source name</fo:inline> and have a level that equals or |
| exceeds the specified value.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log event source name refers to the fully qualified class name from which the |
| event originates. These names permit a trailing wild card <fo:inline font-family="monospace">.*</fo:inline>. For |
| instance a source name of <fo:inline font-family="monospace">org.apache.qpid.*</fo:inline> will match all events |
| from classes in the package <fo:inline font-family="monospace">org.apache.qpid</fo:inline> and any sub packages |
| beneath.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Level</fo:inline> governs the level of the events that will be included |
| in the log. It may take one of the following values: ERROR, WARN, INFO, DEBUG, TRACE |
| where ERROR is considered the highest and TRACE the lowest. In addition, there are two |
| special values: OFF and ALL, the former excludes all log events whereas the latter will |
| include everything. When considering whether a logging event should be included in the |
| log, the logging event must have a level that matches that of the inclusion rule or be |
| higher, otherwise the log event will not appear in the log.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Management"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Logging Management</fo:marker><fo:block font-size="17.28pt">9.1.5. Logging Management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The logging subsystem can be completely managed from the Web Management Console or the |
| REST API. You can: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8799"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8800"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Add, remove, or change the configuration of Loggers.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8803"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Add, remove, or change the Inclusion Rules.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8806"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>For FileLoggers, download the log file and rolled log files associated with |
| the Logger.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8809"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>For MemoryLoggers, view the last <fo:inline font-family="monospace">n</fo:inline> log |
| events</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure that follows shows a FileLogger. The attributes area shows the configuration |
| of the Logger. The inclusion rule table shows the rules that are associated with the Logger. |
| The area towards the bottom of the tab allows the log files to be downloaded to the browser. |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-FileLogger"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 9.1. Viewing a file logger</fo:block><fo:block id="d0e8821"><fo:external-graphic src="url(runtime/images/Management-Web-Logging-FileLogger.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure below shows the editing of the level of an inclusion rule. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-InclusionRule"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 9.2. Editing an inclusion rule</fo:block><fo:block id="d0e8833"><fo:external-graphic src="url(runtime/images/Management-Web-Logging-InclusionRule.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure below shows a Memory Logger. Note that the Memory Logger provides access to |
| the cached message via the viewer towards the bottom on the tab. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-MemoryLogger"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 9.3. Viewing a memory logger</fo:block><fo:block id="d0e8845"><fo:external-graphic src="url(runtime/images/Management-Web-Logging-MemoryLogger.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Disk-Space-Management"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Disk Space Management</fo:marker><fo:block font-size="20.735999999999997pt">9.2. Disk Space Management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Disk quota-based flow control</fo:marker><fo:block font-size="17.28pt">9.2.1. Disk quota-based flow control</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Apache Qpid Broker-J supports a flow control mechanism which is triggered when a configured |
| disk quota is exceeded. This is supported by the BDB and Derby virtualhosts. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This functionality blocks all producers on reaching the disk overflow limit. When consumers consume the |
| messages, causing disk space usage to falls below the underflow limit, the producers are unblocked and continue |
| working as normal. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Two limits can be configured: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| overfull limit - the maximum space on disk (in bytes). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| underfull limit - when the space on disk drops below this limit, producers are allowed to resume publishing. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The overfull and underful limit can be specified when a new virtualhost is created or an exiting virtualhost is |
| edited. This can be done using the Store Overflow and Store Underfull settings within the virtual host creation |
| and edit dialogue. If editing an existing virtualhost, the virtualhost must be restarted for the new values to |
| take effect. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The disk quota functionality is based on "best effort" principle. This means the broker cannot guarantee that |
| the disk space limit will not be exceeded. If several concurrent transactions are started before the limit is |
| reached, which collectively cause the limit to be exceeded, the broker may allow all of them to be committed. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Broker will also impose flow control if the filesystem hosting a virtualhost exceeds a <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Context-StoreFilesystemMaxUsagePercent"><fo:inline>configured |
| percentage.</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8879"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The <fo:inline font-style="italic">Producer Flow Control</fo:inline> can be configured on individual queue using |
| <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy. |
| For more details, please read<fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>. |
| </fo:block></fo:block></fo:block><fo:block id="d0e8890"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.2.1.1. Broker Log Messages for quota flow control</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| There are two broker log messages that may occur if flow control through disk quota limits is enabled. When |
| the virtual host is blocked due to exceeding of the disk quota limit the following message appears in the |
| broker log |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8895"> |
| [vh(/test)/ms(BDBMessageStore)] MST-1008 : Store overfull, flow control will be enforced |
| </fo:block> |
| When virtual host is unblocked after cleaning the disk space the following message appears in the broker log |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8898"> |
| [vh(/test)/ms(BDBMessageStore)] MST-1009 : Store overfull condition cleared |
| </fo:block> |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Transaction Timeout</fo:marker><fo:block font-size="20.735999999999997pt">9.3. Transaction Timeout</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-GeneralInformation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">General Information</fo:marker><fo:block font-size="17.28pt">9.3.1. General Information</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The transaction timeout mechanism is used to control broker resources when clients |
| using transactions hang, become unresponsive, or simply (due to programming error) |
| begin a transaction and keep using it without ever calling committing or rolling back.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Users can choose to configure an idleWarn or openWarn threshold, after which the identified |
| transaction should be logged as a WARN level alert as well as (more importantly) an idleClose or |
| openClose threshold after which the transaction and the connection it applies to will be |
| closed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature is particularly useful in environments where the owner of the broker does not |
| have full control over the implementation of clients, such as in a shared services |
| deployment.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following section provide more details on this feature and its use.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Purpose"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Purpose</fo:marker><fo:block font-size="17.28pt">9.3.2. Purpose</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> This feature has been introduced to address the scenario where an open transaction on the |
| broker holds an open transaction on the persistent store. This can have undesirable consequences |
| if the store does not time out or close long-running transactions, such as with BDB. This can can |
| result in a rapid increase in disk usage size, bounded only by available space, due to growth of |
| the transaction log. </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Effect</fo:marker><fo:block font-size="17.28pt">9.3.3. Effect</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Full details of configuration options are provided in the sections that follow. This section |
| gives a brief overview of what the Transaction Timeout feature can do.</fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect-Broker-Side"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.3.3.1. Broker Logging and Connection Close</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When the openWarn or idleWarn specified threshold is exceeded, the broker will log a WARN |
| level alert with details of the connection on which the threshold has been exceeded, |
| along with the age of the transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When the openClose or idleClose specified threshold value is exceeded, the broker will |
| throw an exception back to the client connection via the <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)"><fo:inline>ExceptionListener</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)">http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html</fo:basic-link>]</fo:inline>, log the |
| action and then close the connection.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The example broker log output shown below is where the idleWarn threshold specified is |
| lower than the idleClose threshold and the broker therefore logs the idle transaction 3 times |
| before the close threshold is triggered and the connection closed out.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8938"> |
| CON-1011 : Idle Transaction : 13,116 ms |
| CON-1011 : Idle Transaction : 14,116 ms |
| CON-1011 : Idle Transaction : 15,118 ms |
| CON-1002 : Close : Idle transaction timed out |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The second example broker log output shown below illustrates the same mechanism operating |
| on an open transaction.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8942"> |
| CON-1010 : Open Transaction : 12,406 ms |
| CON-1010 : Open Transaction : 13,406 ms |
| CON-1010 : Open Transaction : 14,406 ms |
| CON-1002 : Close : Open transaction timed out |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect-Client-Side"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.3.3.2. Client Side Effect</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">After a Close threshold has been exceeded, the Broker will close the client's connection. |
| The application must reconnect itself in order to continue work. If the |
| client is a JMS client, the application will be notified by the |
| <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)"><fo:inline>exception |
| listener.</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)">http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html</fo:basic-link>]</fo:inline></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block font-size="17.28pt">9.3.4. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Configuration-Overview"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.3.4.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The transaction timeouts can be specified when a new virtualhost is created or an exiting |
| virtualhost is edited.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">We would recommend that only warnings are configured at first, which should allow broker |
| administrators to obtain an idea of the distribution of transaction lengths on their systems, |
| and configure production settings appropriately for both warning and closure. Ideally |
| establishing thresholds should be achieved in a representative UAT environment, with clients and |
| broker running, prior to any production deployment.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is impossible to give suggested values, due to the large variation in usage depending on |
| the applications using a broker. However, clearly transactions should not span the expected |
| lifetime of any client application as this would indicate a hung client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When configuring closure timeouts, it should be noted that a timeout on any producer |
| or consumer will cause the connection to be closed - this disconnecting all producers and consumers |
| created on that connection.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Handing Undeliverable Messages</fo:marker><fo:block font-size="20.735999999999997pt">9.4. Handing Undeliverable Messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="17.28pt">9.4.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Messages that cannot be delivered successfully to a consumer (for instance, because the |
| client is using a transacted session and rolls-back the transaction) can be made available on |
| the queue again and then subsequently be redelivered, depending on the precise session |
| acknowledgement mode and messaging model used by the application. This is normally desirable |
| behaviour that contributes to the ability of a system to withstand unexpected errors. However, it |
| leaves open the possibility for a message to be repeatedly redelivered (potentially indefinitely), |
| consuming system resources and preventing the delivery of other messages. Such undeliverable |
| messages are sometimes known as poison messages.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For an example, consider a stock ticker application that has been designed to consume prices |
| contained within JMS TextMessages. What if inadvertently a BytesMessage is placed onto the queue? |
| As the ticker application does not expect the BytesMessage, its processing might fail and cause it |
| to roll-back the transaction, however the default behavior of the Broker would mean that the |
| BytesMessage would be delivered over and over again, preventing the delivery of other legitimate |
| messages, until an operator intervenes and removes the erroneous message from the queue. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Qpid has maximum delivery count and dead-letter queue (DLQ) features which can be used in |
| concert to construct a system that automatically handles such a condition. These features are |
| described in the following sections.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Maximum Delivery Count</fo:marker><fo:block font-size="17.28pt">9.4.2. Maximum Delivery Count</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Maximum delivery count is an attribute of a queue. If a consumer application is unable to |
| process a message more than the specified number of times, then the Broker will either route the |
| message via the queue's <fo:inline font-style="italic">alternate binding</fo:inline> (if one has been defined), or will |
| discard the message.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using AMQP 1.0 the current delivery count of a message is available to the consuming |
| application via the <fo:inline font-family="monospace">message-count</fo:inline> message header (exposed via the |
| <fo:inline font-family="monospace">JMSXDeliveryCount</fo:inline> JMS message property when using JMS). When using the |
| AMQP 0-8..0-10 protocols this information is not available.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8994"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> When using AMQP 0-8..0-10, in order for a maximum delivery count to be enforced, the consuming application |
| <fo:inline font-style="italic">must</fo:inline> call <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback())"><fo:inline>Session#rollback()</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback())">http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback()</fo:basic-link>]</fo:inline> (or <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#recover())"><fo:inline>Session#recover()</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#recover())">http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#recover()</fo:basic-link>]</fo:inline> if the session is not transacted). It is during the Broker's |
| processing of Session#rollback() (or Session#recover()) that if a message has been seen |
| at least the maximum number of times then it will move the message to the DLQ or discard the |
| message. If the consuming application fails in another manner, for instance, closes the connection, the |
| message will not be re-routed and consumer application will see the same poison message again |
| once it reconnects.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If the consuming application is using Qpid JMS Client 0-x and using AMQP 0-8, 0-9, or 0-9-1 |
| protocols, it is necessary to set the client system property <fo:inline font-family="monospace">qpid.reject.behaviour</fo:inline> or |
| connection or binding URL option <fo:inline font-family="monospace">rejectbehaviour</fo:inline> to the value <fo:inline font-family="monospace">server</fo:inline>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Alternate Binding</fo:marker><fo:block font-size="17.28pt">9.4.3. Alternate Binding</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the maximum delivery count is exceeded, if the queue has an <fo:inline font-family="monospace">alternateBinding</fo:inline> |
| specified, the Broker automatically routes the message via the alternate binding. The alternate binding |
| would normally specify a queue designated for that purpose of receiving the undeliverable messages. |
| By convention such queues are known as dead-letter queues or simply DLQs.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to configure the broker to automatically default a DLQ for every queue created. To do this |
| one can set the context variable <fo:inline font-family="monospace">queue.defaultAlternateBinding</fo:inline> at the Virtual Host (or above) |
| level. For example, by setting the value to <fo:inline font-family="monospace">{\"destination\": \"$${this:name}_DLQ\"}</fo:inline> |
| a new queue <fo:inline font-style="italic">exampleQueue</fo:inline> will default to having an alternate binding to |
| <fo:inline font-style="italic">exampleQueue_DLQ</fo:inline>. To avoid error this should be combined with setting a node auto creation |
| policy on the VirtualHost, so that such DLQs are automatically created, e.g. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9039"> |
| "nodeAutoCreationPolicies" : [ { |
| "pattern" : ".*_DLQ", |
| "nodeType" : "Queue", |
| "attributes" : { |
| "alternateBinding" : "" |
| }, |
| "createdOnPublish" : true, |
| "createdOnConsume" : true |
| } ] |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9041"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block>For the autocreated DLQs it is important to override the default alternate binding, as above, else the creation of an |
| infinite chain of DLQs for DLQs will be attempted.</fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9043"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Avoid excessive queue depth</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications making use of DLQs <fo:inline font-style="italic">should</fo:inline> make provision for the frequent |
| examination of messages arriving on DLQs so that both corrective actions can be taken to resolve |
| the underlying cause and organise for their timely removal from the DLQ. Messages on DLQs |
| consume system resources in the same manner as messages on normal queues so excessive queue |
| depths should not be permitted to develop.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Close-Connection-When-No-Route"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Closing client connections on unroutable mandatory messages</fo:marker><fo:block font-size="20.735999999999997pt">9.5. Closing client connections on unroutable mandatory messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Close-Connection-When-No-Route-Summary"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Summary</fo:marker><fo:block font-size="17.28pt">9.5.1. Summary</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Due to asynchronous nature of AMQP 0-8/0-9/0-9-1 protocols sending a message with a routing key for which no queue binding exist results |
| in either message being bounced back (if it is mandatory or immediate) or discarded on broker side otherwise. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When a 'mandatory' message is returned, the Apache Qpid JMS AMQP 0-x clients conveys this by delivering |
| an <fo:inline font-style="italic">AMQNoRouteException</fo:inline> through the configured ExceptionListener on the Connection. |
| This does not cause channel or connection closure, however it requires a special exception handling |
| on client side in order to deal with <fo:inline font-style="italic">AMQNoRouteExceptions</fo:inline>. |
| This could potentially be a problem when using various messaging frameworks (e.g. Mule) |
| as they usually close the connection on receiving any JMSException. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In order to simplify application handling of scenarios where 'mandatory' messages |
| are being sent to queues which do not actually exist, the Apache Qpid Broker-J can be configured such that |
| it will respond to this situation by closing the connection |
| rather than returning the unroutable message to the client as it normally should. |
| From the application perspective, this will result in failure of synchronous operations in progress such as a session commit() call. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9070"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature affects only transacted sessions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| By default, the Apache Qpid JMS AMQP 0-x produces mandatory messages when using queue destinations. Topic |
| destinations produce 'non-mandatory' messages. |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Configuring |
| <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> |
| </fo:marker><fo:block font-size="17.28pt">9.5.2. Configuring |
| <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> |
| </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The Port attribute <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> can be set to specify this feature on broker side. |
| By default, it is turned on. Setting <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> to <fo:inline font-style="italic">false</fo:inline> switches |
| it off. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See the <fo:basic-link external-destination="url(../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html)"><fo:inline>Qpid JMS AMQP 0-x client |
| documentation</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html)">../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html</fo:basic-link>]</fo:inline> for details of enabling this feature client side. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Flow to Disk</fo:marker><fo:block font-size="20.735999999999997pt">9.6. Flow to Disk</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Flow to disk limits the amount of <fo:basic-link internal-destination="Java-Broker-Runtime-Memory"><fo:inline>direct and heap memory</fo:inline></fo:basic-link> |
| that can be occupied by messages. Once this |
| limit is reached any new transient messages and all existing transient messages will be |
| transferred to disk. Newly arriving transient messages will continue to go to the disk until the |
| cumulative size of all messages falls below the limit once again.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default the Broker makes 75% of the max direct available memory for messages. This memory is |
| divided between all the queues across all virtual hosts defined on the Broker with a percentage |
| calculated according to their current queue size. These calculations are refreshed periodically |
| by the housekeeping cycle.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example if there are two queues, one containing 75MB and the second 100MB messages |
| respectively and the Broker has 1GB direct memory with the default of 75% available for messages. |
| The first queue will have a target size of 320MB and the second 430MB. Once 750MB is taken by |
| messages, messages will begin to flow to disk. New messages will cease to flow to disk when |
| their cumulative size falls beneath 750MB.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Flow to disk is configured by Broker context variable |
| <fo:inline font-family="monospace">broker.flowToDiskThreshold</fo:inline>. It is expressed as a size in bytes and defaults |
| to 75% of the JVM maximum heap size.</fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk-Monitoring"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Flow to Disk Monitoring</fo:marker><fo:block font-size="17.28pt">9.6.1. Flow to Disk Monitoring</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A number of statistics attributes are available on the <fo:inline font-family="monospace">Broker</fo:inline> to allow monitoring |
| of the amount of utilized direct memory by the enqueued messages. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The total amount of allocated direct memory by the <fo:inline font-family="monospace">Broker</fo:inline> can be determined by |
| checking <fo:inline font-family="monospace">Broker</fo:inline> statistics <fo:inline font-family="monospace">usedDirectMemorySize</fo:inline>. There is another |
| <fo:inline font-family="monospace">Broker</fo:inline> level statistics <fo:inline font-family="monospace">directMemoryTotalCapacity</fo:inline> to get the total amount |
| of allocated direct memory. Usually, the values reported by both statistics attributes |
| <fo:inline font-family="monospace">usedDirectMemorySize</fo:inline> and <fo:inline font-family="monospace">directMemoryTotalCapacity</fo:inline> are the same |
| or do not differ much. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The direct memory consumed by the <fo:inline font-family="monospace">VirtualHost</fo:inline> messages is reported as |
| <fo:inline font-family="monospace">VirtualHost</fo:inline> statistics <fo:inline font-family="monospace">inMemoryMessageSize</fo:inline>. The current value of |
| <fo:inline font-family="monospace">VirtualHost</fo:inline> direct memory threshold is exposed with statistics attribute |
| <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>. When the value of <fo:inline font-family="monospace">inMemoryMessageSize</fo:inline> is |
| greater than <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>, the flow to disk is triggered to bring the amount of |
| direct memory consumed by the <fo:inline font-family="monospace">VirtualHost</fo:inline> messages in-line with the |
| <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>. |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk-Logging"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Flow to Disk Logging</fo:marker><fo:block font-size="17.28pt">9.6.2. Flow to Disk Logging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">Flow to Disk</fo:inline> events are not reported as operational logs or |
| <fo:inline font-family="monospace">INFO</fo:inline> logs due to quite frequent triggering of <fo:inline font-family="monospace">Flow to Disk</fo:inline> |
| for messaging use cases requiring holding messages on the <fo:inline font-family="monospace">Broker</fo:inline> side for some time. |
| As result, the <fo:inline font-family="monospace">Flow to Disk</fo:inline> logs can quickly dominate the broker logs and cause unnecessary |
| disk consumption. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Though, if required, the <fo:inline font-family="monospace">Flow to Disk</fo:inline> DEBUG logs can be enabled by adding |
| the following logging rule into the corresponding <fo:inline font-family="monospace">Broker</fo:inline> logger. |
| <fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e9203"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 9.1. Flow to Disk logging rule</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9206"> |
| { |
| "name" : "DirectMemory", |
| "type" : "NameAndLevel", |
| "level" : "DEBUG", |
| "loggerName" : "org.apache.qpid.server.directMemory.*" |
| } |
| </fo:block></fo:block></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please note, that the logger <fo:inline font-family="monospace">org.apache.qpid.server.directMemory.broker</fo:inline> |
| is used by the <fo:inline font-family="monospace">Broker</fo:inline> to report conditions when direct memory utilization exceeds the pred-defined |
| <fo:inline font-family="monospace">Broker</fo:inline> threshold, whilst the logger <fo:inline font-family="monospace">org.apache.qpid.server.directMemory.virtualhost</fo:inline> |
| is used to report conditions when direct memory utilization by the <fo:inline font-family="monospace">VirtualHost</fo:inline> |
| messages exceeds the current value of the <fo:inline font-family="monospace">VirtualHost</fo:inline> threshold. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Consumers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Consumers</fo:marker><fo:block font-size="20.735999999999997pt">9.7. Consumers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A Consumer is created when an AMQP connection wishes to receive messages from a message source (such as a |
| Queue). The standard behaviours of consumers are defined by the respective AMQP specification, however in addition |
| to the standard behaviours a number of Qpid specific enhancements are available</fo:block><fo:block id="Java-Broker-Runtime-Consumers-Prioirty"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Priority</fo:marker><fo:block font-size="17.28pt">9.7.1. Priority</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default, when there are multiple competing consumers attached to the same message source, the Broker |
| attempts to distribute messages from the queue in a "fair" manner. Some use cases require allocation of messages |
| to consumers to be based on the "priority" of the consumer. Where there are multiple consumers having differing |
| priorities, the Broker will always attempt to deliver a message to a higher priority consumer before attempting |
| delivery to a lower priority consumer. That is, a lower priority consumer will only receive a message if no |
| higher priority consumers currently have credit available to consume the message, or those consumers have declined |
| to accept the message (for instance because it does not meet the criteria of any selectors associated with the |
| consumer).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where a consumer is created with no explicit priority provided, the consumer is given the highest possible |
| priority.</fo:block><fo:block id="d0e9242"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.7.1.1. Creating a Consumer with a non-standard priority</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In AMQP 0-9 and 0-9-1 the priority of the consumer can be set by adding an entry into the table provided as the |
| <fo:inline font-family="monospace">arguments</fo:inline> field (known as the <fo:inline font-family="monospace">filter</fo:inline> field on AMQP 0-9) of the |
| <fo:inline font-family="monospace">basic.consume</fo:inline> method. The key for the entry must be the literal short string |
| <fo:inline font-family="monospace">x-priority</fo:inline>, and the value of the entry must be an integral number in the range |
| -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In AMQP 0-10 the priority of the consumer can be set in the map provided as the <fo:inline font-family="monospace">arguments</fo:inline> |
| field of the <fo:inline font-family="monospace">message.subscribe</fo:inline> method. The key for the entry must be the literal string |
| <fo:inline font-family="monospace">x-priority</fo:inline>, and the value of the entry must be an integral number in the range |
| -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| In AMQP 1.0 the priority of the consumer is set in the <fo:inline font-family="monospace">properties</fo:inline> map of the |
| <fo:inline font-family="monospace">attach</fo:inline> frame where the broker side of the link represents the sending side of the link. |
| The key for the entry must be the literal string <fo:inline font-family="monospace">priority</fo:inline>, and the value of the entry must |
| be an integral number in the range -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When using the Qpid JMS client for AMQP 0-9/0-9-1/0-10 the consumer priority can be set in the address being |
| used for the Destination object. |
| |
| <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e9301"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 9.1. Setting the consumer priority</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Syntax</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Example</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>Addressing</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>myqueue : { link : { x-subscribe: { arguments : { x-priority : '10' } } } }</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>Binding URL</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>direct://amq.direct/myqueue/myqueue?x-qpid-replay-priority='10'</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block> |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Background-Recovery"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Background Recovery</fo:marker><fo:block font-size="20.735999999999997pt">9.8. Background Recovery</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On startup of the Broker, or restart of a Virtualhost, the Broker restores all durable |
| queues and their messages from disk. In the Broker's default mode the Virtualhosts do not become |
| active until this recovery process completes. If queues have a large number of entries, this may |
| take considerable time. During this time no messaging can be performed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker has a background recovery feature allows the system to return to operation |
| sooner. If enabled the recovery process takes place in the background allow producers and |
| consumers to begin work earlier.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The feature respects the message delivery order requirements of standard queues, that is any |
| messages arriving whilst the background recovery is in flight won't overtake older messages |
| still to be recovered from disk. There is an exception for the out of order queue types whilst |
| background recovery is in flight. For instance, with priority queues older lower priority |
| messages may be delivered before newer, higher priority.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To activate the feature, set a <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General"><fo:inline>context variable</fo:inline></fo:basic-link> |
| <fo:inline font-family="monospace">use_async_message_store_recovery</fo:inline> at the desired Virtualhost, or at Broker or |
| higher to enable the feature broker-wide.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9343"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The background recovery feature does not write operational log messages to indicate its |
| progress. This means messages <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-MST-1004"><fo:inline>MST-1004</fo:inline></fo:basic-link> and <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-MST-1005"><fo:inline>MST-1005</fo:inline></fo:basic-link> will not |
| be seen.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Message-Compression"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Message Compression</fo:marker><fo:block font-size="20.735999999999997pt">9.9. Message Compression</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Apache Qpid Broker-J supports<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>Message compression is not yet supported for the 1.0 |
| protocol.</fo:block></fo:footnote-body></fo:footnote> message compression. This feature works in co-operation with Qpid |
| Clients implementing the same feature.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the feature is enabled (using Broker context variable |
| <fo:inline font-style="italic">broker.messageCompressionEnabled</fo:inline>), the Broker will advertise support for the |
| message compression feature to the client at connection time. This allows clients to opt to turn |
| on message compression, allowing message payload sizes to be reduced.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the Broker has connections from clients who have message compression enabled and others who |
| do not, it will internally, on-the-fly, decompress compressed messages when sending to clients |
| without support and conversely, compress uncomressed messages when sending to clients who do.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker has a threshold below which it will not consider compressing a message, this is |
| controlled by Broker content variable |
| (<fo:inline font-family="monospace">connection.messageCompressionThresholdSize</fo:inline>) and expresses a size in bytes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature <fo:inline font-style="italic">may</fo:inline> have a beneficial effect on performance by:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9379"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9380"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Reducing the number of bytes transmitted over the wire, both between Client and Broker, and |
| in the HA case, Broker to Broker, for replication purposes.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9383"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Reducing storage space when data is at rest within the Broker, both on disk and in |
| memory.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Of course, compression and decompression is computationally expensive. Turning on the feature |
| may have a negative impact on CPU utilization on Broker and/or Client. Also for small messages |
| payloads, message compression may increase the message size. It is recommended to test the feature |
| with representative data.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Connection-Limit"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Connection Limits</fo:marker><fo:block font-size="20.735999999999997pt">9.10. Connection Limits</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Each connection to the Broker consumes resources while it is connected. In order to protect |
| the Broker against malfunctioning (or malicious) client processes, it is possible to limit the |
| number of connections that can be active on any given port. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Connection limits on AMQP ports are controlled by an attribute "maxOpenConnections" on |
| the port. By default this takes the value of the context variable |
| <fo:inline font-family="monospace">qpid.port.max_open_connections</fo:inline> which in itself is defaulted to the |
| value <fo:inline font-family="monospace">-1</fo:inline> meaning there is no limit. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If the interpolated value of <fo:inline font-family="monospace">maxOpenConnections</fo:inline> on an AMQP port is a |
| positive integer, then when that many active connections have been established no new |
| connections will be allowed (until an existing connection has been closed). Any such |
| rejection of a connection will be accompanied by the operational log message |
| <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005"><fo:inline>PRT-1005</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The context variable <fo:inline font-family="monospace">qpid.port.open_connections_warn_percent</fo:inline> can be |
| used to control when a warning log message is generated as the number of open connections |
| approaches the limit for the port. The default value of this variable is |
| <fo:inline font-family="monospace">80</fo:inline> meaning that if more the number of open connections to the port |
| has exceeded 80% of the given limit then the operatinal log message |
| <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004"><fo:inline>PRT-1004</fo:inline></fo:basic-link> |
| will be generated. |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Memory</fo:marker><fo:block font-size="20.735999999999997pt">9.11. Memory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Introduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block font-size="17.28pt">9.11.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Understanding how the Qpid broker uses memory is essential to running a high performing and reliable service. |
| A wrongly configured broker can exhibit poor performance or even crash with an <fo:inline font-family="monospace">OutOfMemoryError</fo:inline>. |
| Unfortunately, memory usage is not a simple topic and thus requires some in depth explanations. |
| This page should give the required background information to make informed decisions on how to configure your broker. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Types"><fo:inline>Section 9.11.2, “Types of Memory”</fo:inline></fo:basic-link> explains the two different kinds of Java memory most relevant to the broker. |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage"><fo:inline>Section 9.11.3, “Memory Usage in the Broker”</fo:inline></fo:basic-link> goes on to explain which parts of the broker use what kind of memory. |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory"><fo:inline>Section 9.11.4, “Low Memory Conditions”</fo:inline></fo:basic-link> explains what happens when the system runs low on memory. |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Defaults"><fo:inline>Section 9.11.5, “Defaults”</fo:inline></fo:basic-link> lays out the default settings of the Qpid broker. |
| Finally, <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Tuning"><fo:inline>Section 9.11.6, “Memory Tuning the Broker”</fo:inline></fo:basic-link> gives some advice on tuning your broker. |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Types of Memory</fo:marker><fo:block font-size="17.28pt">9.11.2. Types of Memory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| While Java has a couple of different internal memory types we will focus on the two types that are relevant to the Qpid broker. |
| Both of these memory types are taken from the same physical memory (RAM). |
| </fo:block><fo:block id="d0e9450"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.2.1. Heap</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Normally, all objects are allocated from Java's heap memory. |
| Once, nothing references an object it is cleaned up by the Java Garbage Collector and it's memory returned to the heap. |
| This works fine for most use cases. |
| However, when interacting with other parts of the operating system using Java's heap is not ideal. |
| This is where the so called direct memory comes into play. |
| </fo:block></fo:block><fo:block id="d0e9455"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.2.2. Direct</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The world outside of the JVM, in particular the operating system (OS), does not know about Java heap memory and uses other structures like C arrays. |
| In order to interact with these systems Java needs to copy data between its own heap memory and these native structures. |
| This can become a bottle neck when there is a lot of exchange between Java and the OS like in I/O (both disk and network) heavy applications. |
| Java's solution to this is to allow programmers to request <fo:inline font-family="monospace">ByteBuffer</fo:inline>s from so called direct memory. |
| This is an opaque structure that <fo:inline font-style="italic">might</fo:inline> have an underlying implementation that makes it efficient to interact with the OS. |
| Unfortunately, the GC is not good at tracking direct memory and in general it is inadvisable to use direct memory for regular objects. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Usage"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Memory Usage in the Broker</fo:marker><fo:block font-size="17.28pt">9.11.3. Memory Usage in the Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This section lists some note worthy users of memory within the broker and where possible lists their usage of heap and direct memory. |
| Note that to ensure smooth performance some heap memory should remain unused by the application and be reserved for the JVM to do house keeping and garbage collection. |
| <fo:basic-link external-destination="url(https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)"><fo:inline>Some guides</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)">https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html</fo:basic-link>]</fo:inline> advise to reserve up to 30% of heap memory for the JVM. |
| </fo:block><fo:block id="d0e9474"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.3.1. Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The broker itself uses a moderate amount of heap memory (≈15 MB). |
| However, each connection and session comes with a heap overhead of about 17 kB and 15 kB respectively. |
| In addition, each connection reserves 512 kB direct memory for network I/O. |
| </fo:block></fo:block><fo:block id="d0e9479"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.3.2. Virtual Hosts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The amount of memory a Virtual Host uses depends on its type. |
| For a JSON Virtual Host Node with a BDB Virtual Host the heap memory usage is approximately 2 MB. |
| However, each BDB Virtual Hosts has a mandatory cache in heap memory which has an impact on performance. |
| See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage-BDB"><fo:inline>below</fo:inline></fo:basic-link> for more information. |
| </fo:block></fo:block><fo:block id="d0e9487"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.3.3. Messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Messages and their headers are kept in direct memory and have an additional overhead of approximately 1 kB heap memory each. |
| This means that most brokers will want to have more direct memory than heap memory. |
| When many small messages accumulate on the broker the 1 kB heap memory overhead can become a <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Heap"><fo:inline>limiting factor</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When the broker is <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:inline>running low on direct memory</fo:inline></fo:basic-link> |
| it will evict enqueued messages from memory and <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flow them to disk</fo:inline></fo:basic-link>. |
| For persistent messages this only means freeing the direct memory representation because they always have an on-disk representation to guard against unexpected failure (e.g., a power cut). |
| For transient messages this implies additional disk I/O. |
| After being flowed to disk messages need to be re-read from disk before delivery. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please, note that messages from uncommitted transactions are not |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flowed to disk</fo:inline></fo:basic-link> as part of |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:inline>running into low direct memory conditions</fo:inline></fo:basic-link>, |
| as they are not enqueued yet. The <fo:inline font-family="monospace">Connection</fo:inline> has its own threshold for |
| keeping messages from uncommitted transactions in memory. Only when <fo:inline font-family="monospace">Connection</fo:inline> threshold |
| is breached, the uncommitted messages on the connection are |
| <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flowed to disk</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Usage-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.3.4. Message Store</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e9523"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Berkeley DB (BDB)</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The broker can use Oracle's BDB JE (BDB) as a message store to persist messages by writing them to a database. |
| BDB uses a mandatory cache for navigating and organising its database structure. |
| Sizing and tuning this cache is a topic of its own and would go beyond the scope of this guide. |
| Suffice to say that by default Qpid uses 5% of heap memory for BDB caches (each Virtual Host uses a separate cache) or 10 MB per BDB store, whichever is greater. |
| See the <fo:basic-link external-destination="url(http://www.oracle.com/us/products/database/berkeley-db/je)"><fo:inline>official webpage</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://www.oracle.com/us/products/database/berkeley-db/je)">http://www.oracle.com/us/products/database/berkeley-db/je</fo:basic-link>]</fo:inline> especially <fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)"><fo:inline>this page</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)">http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html</fo:basic-link>]</fo:inline> for more information. |
| For those interested, Qpid uses <fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN)"><fo:inline>EVICT_LN</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN)">http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN</fo:basic-link>]</fo:inline> as its default JE cacheMode. |
| </fo:block></fo:block><fo:block id="d0e9537"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Derby</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| TODO |
| </fo:block></fo:block></fo:block><fo:block id="d0e9542"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.3.5. HTTP Management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Qpid uses Jetty for the HTTP Management (both REST and Web Management Console). |
| When the management plugin is loaded it will allocate the memory it needs and should not require more memory during operation and can thus be largely ignored. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Low-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Low Memory Conditions</fo:marker><fo:block font-size="17.28pt">9.11.4. Low Memory Conditions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Low-Memory-Heap"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.4.1. Low on Heap Memory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When the broker runs low on heap memory performance will degrade because the JVM will trigger full garbage collection (GC) events in a struggle to free memory. |
| These full GC events are also called stop-the-world events as they completely halt the execution of the Java application. |
| Stop-the-world-events may take any where from a couple of milliseconds up to several minutes. |
| Should the heap memory demands rise even further the JVM will eventually throw an OutOfMemoryError which will cause the broker to shut down. |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.4.2. Low on Direct Memory</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| When the broker detects that it uses 75% of available direct memory it will start flowing incoming transient messages to disk and reading them back before delivery. |
| This will prevent the broker from running out of direct memory but may degrade performance by requiring disk I/O. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Defaults"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Defaults</fo:marker><fo:block font-size="17.28pt">9.11.5. Defaults</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| By default Qpid uses these settings: |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9565"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9566"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| 0.5 GB heap memory |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9568"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| 1.5 GB direct memory |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9570"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| 5% of heap reserved for the BDB JE cache. |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9572"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| Start flow-to-disk at 75% direct memory utilisation. |
| </fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| As an example, this would accommodate a broker with 50 connections, each serving 5 sessions, and each session having 1000 messages of 1 kB on queues in the broker. |
| This means a total of 250 concurrent sessions and a total of 250000 messages without flowing messages to disk. |
| </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Tuning"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Memory Tuning the Broker</fo:marker><fo:block font-size="17.28pt">9.11.6. Memory Tuning the Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e9578"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.6.1. Java Tuning</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Most of these options are implementation specific. It is assumed you are using Oracle Java 11. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9583"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9584"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| Heap and direct memory can be configured through the <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"><fo:inline><fo:inline font-family="monospace">QPID_JAVA_MEM</fo:inline> environment variable</fo:inline></fo:basic-link>. |
| </fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block></fo:block><fo:block id="d0e9592"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.6.2. Qpid Tuning</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9595"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9596"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| The system property <fo:inline font-family="monospace">qpid.broker.bdbTotalCacheSize</fo:inline> sets the total amount of heap memory (in bytes) allocated to BDB caches. |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| The system property <fo:inline font-family="monospace">broker.flowToDiskThreshold</fo:inline> sets the threshold (in bytes) for flowing transient messages to disk. |
| Should the broker use more than direct memory it will flow incoming messages to disk. |
| Should utilisation fall beneath the threshold it will stop flowing messages to disk. |
| </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9606"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block> |
| The system property <fo:inline font-family="monospace">connection.maxUncommittedInMemorySize</fo:inline> sets the threshold (in bytes) |
| for total messages sizes (in bytes) from connection uncommitted transactions when messages are hold in memory. |
| If threshold is exceeded, all messages from connection in-flight transactions are flowed to disk including |
| those arriving after breaching the threshold. |
| </fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e9611"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.6.3. Formulae</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| We developed a simple formula which estimates the <fo:inline font-style="italic">minimum</fo:inline> memory usage of the broker under certain usage. |
| These are rough estimate so we strongly recommend testing your configuration extensively. |
| Also, if your machine has more memory available by all means use more memory as it can only improve the performance and stability of your broker. |
| However, remember that both heap and direct memory are served from your computer's physical memory so their sum should never exceed the physically available RAM (minus what other processes use). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="d0e9621"><fo:inline> |
| memory<fo:inline font-size="75%" baseline-shift="sub">heap</fo:inline> = 15 MB + 20 kB * N<fo:inline font-size="75%" baseline-shift="sub">sessions</fo:inline> + (1.7 kB + (120 + averageSize<fo:inline font-size="75%" baseline-shift="sub">headerNameAndValue</fo:inline> ) * averageNumber<fo:inline font-size="75%" baseline-shift="sub">headers</fo:inline>)* N<fo:inline font-size="75%" baseline-shift="sub">messages</fo:inline> + 100 kB * N<fo:inline font-size="75%" baseline-shift="sub">connections</fo:inline> |
| </fo:inline></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="d0e9645"><fo:inline> |
| memory<fo:inline font-size="75%" baseline-shift="sub">direct</fo:inline> = 2 MB + (200 B + averageSize<fo:inline font-size="75%" baseline-shift="sub">msg</fo:inline> *2)* N<fo:inline font-size="75%" baseline-shift="sub">messages</fo:inline> + 1MB * N<fo:inline font-size="75%" baseline-shift="sub">connections</fo:inline> |
| </fo:inline></fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Where <fo:inline>N</fo:inline> denotes the total number of connections/sessions/messages on the broker. Furthermore, for direct memory only the messages that have not been flowed to disk are relevant. |
| </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9666"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The formulae assume the worst case in terms of memory usage: persistent messages and TLS connections. Transient messages consume less heap memory than persistent and plain connections consume less direct memory than TLS |
| connections. |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="d0e9669"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">9.11.6.4. Things to Consider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="d0e9672"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">Performance</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Choosing a smaller direct memory size will lower the threshold for flowing transient messages to disk when messages accumulate on a queue. |
| This can have impact on performance in the transient case where otherwise no disk I/O would be involved. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Having too little heap memory will result in poor performance due to frequent garbage collection events. See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory"><fo:inline>Section 9.11.4, “Low Memory Conditions”</fo:inline></fo:basic-link> for more details. |
| </fo:block></fo:block><fo:block id="d0e9681"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12pt">OutOfMemoryError</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Choosing too low heap memory can cause an OutOfMemoryError which will force the broker to shut down. |
| In this sense the available heap memory puts a hard limit on the number of messages you can have in the broker at the same time. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If the Java runs out of direct memory it also throws a OutOfMemoryError resulting the a broker shutdown. |
| Under normal circumstances this should not happen but needs to be considered when deviating from the default configuration, especially when changing the flowToDiskThreshold. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If you are sending very large messages you should accommodate for this by making sure you have enough direct memory. |
| </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Instrumentation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker Instrumentation</fo:marker><fo:block font-size="20.735999999999997pt">9.12. Broker Instrumentation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Apache Qpid Broker-J heavy relies on java reflection mechanism. A static instrumentation agent |
| can be used to replace <fo:inline font-family="monospace">method.invoke()</fo:inline> reflection calls with static final |
| <fo:inline font-family="monospace">MethodHandle.invokeExact()</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To use instrumentation agent following JVM argument should be added to the broker start parameters:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9704">-javaagent:$BROKER_DIR/lib/qpid-broker-instrumentation-${broker-version}.jar</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">List of classes to instrument can be supplied as a comma separated list:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9708">-javaagent:$BROKER_DIR/lib/qpid-broker-instrumentation-${broker-version}.jar=ConfiguredObjectMethodAttributeOrStatistic</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9710">-javaagent:$BROKER_DIR/lib/qpid-broker-instrumentation-${broker-version}.jar=ConfiguredObjectMethodAttributeOrStatistic,ConfiguredObjectMethodOperation</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9712">-javaagent:$BROKER_DIR/lib/qpid-broker-instrumentation-${broker-version}.jar=ConfiguredObjectMethodAttributeOrStatistic,ConfiguredObjectMethodOperation,AutomatedField</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When no arguments supplied, all classes will be instrumented.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>High Availability</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>High Availability</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-High-Availability"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 10. High Availability</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-GeneralIntroduction"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">General Introduction</fo:marker><fo:block font-size="20.735999999999997pt">10.1. General Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The term High Availability (HA) usually refers to having a number of instances of a |
| service such as a Message Broker available so that should a service unexpectedly fail, or |
| requires to be shutdown for maintenance, users may quickly connect to another instance and |
| continue their work with minimal interruption. HA is one way to make a overall system more |
| resilient by eliminating a single point of failure from a system.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">HA offerings are usually categorised as <fo:inline font-weight="bold">Active/Active</fo:inline> or |
| <fo:inline font-weight="bold">Active/Passive</fo:inline>. An Active/Active system is one where all |
| nodes within the group are usually available for use by clients all of the time. In an |
| Active/Passive system, one only node within the group is available for use by clients at any |
| one time, whilst the others are in some kind of standby state, awaiting to quickly step-in in |
| the event the active node becomes unavailable. </fo:block></fo:block><fo:block id="Java-Broker-High-Availability-OverviewOfHA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">High Availability Overview</fo:marker><fo:block font-size="20.735999999999997pt">10.2. High Availability Overview</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker provides a HA implementation offering an <fo:inline font-weight="bold">Active/Passive</fo:inline> mode of operation. |
| When using HA, many instances of the Broker work together to form an high availability group of two or more nodes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The remainder of this section now talks about the specifics of how HA is achieved in terms |
| of the <fo:basic-link internal-destination="Java-Broker-Concepts"><fo:inline>concepts</fo:inline></fo:basic-link> introduced earlier in this |
| book.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhosts"><fo:inline>Virtualhost</fo:inline></fo:basic-link> is the unit of |
| replication. This means that any <fo:inline font-style="italic">durable</fo:inline> queues, exchanges, and bindings |
| belonging to that virtualhost, any <fo:inline font-style="italic">persistent</fo:inline> messages contained within |
| the queues and any attribute settings applied to the virtualhost itself are automatically |
| replicated to all nodes within the group.<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline>Transient messages and messages on non-durable queues are not replicated.</fo:block></fo:footnote-body></fo:footnote></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is the <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhost-Nodes"><fo:inline>Virtualhost Nodes</fo:inline></fo:basic-link> |
| (from different Broker instances) that join together to form a group. The virtualhost nodes |
| collectively to coordinate the group: they organise replication between the master and |
| replicas and conduct elections to determine who becomes the new master in the event of the old |
| failing.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a virtualhost node is in the <fo:inline font-style="italic">master</fo:inline> role, the virtualhost |
| beneath it is available for messaging work. Any write operations sent to the virtualhost are |
| automatically replicated to all other nodes in group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a virtualhost node is in the <fo:inline font-style="italic">replica</fo:inline> role, the virtualhost |
| beneath it is always unavailable for message work. Any attempted connections to a virtualhost |
| in this state are automatically turned away, allowing a messaging client to discover where the |
| master currently resides. When in replica role, the node sole responsibility is to consume a |
| replication stream in order that it remains up to date with the master.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messaging clients discover the active virtualhost.This can be achieved using a static |
| technique (for instance, a failover url (a feature of the Apache Qpid JMS and Apache Qpid JMS AMQP 0-x clients), |
| or a dynamic one utilising some kind of proxy or virtual IP (VIP).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure that follows illustrates a group formed of three virtualhost nodes from three |
| separate Broker instances. A client is connected to the virtualhost node that is in the master |
| role. The two virtualhost nodes <fo:inline font-family="monospace">weather1</fo:inline> and <fo:inline font-family="monospace">weather3</fo:inline> |
| are replicas and are receiving a stream of updates.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-High-Availability-OverviewOfHA-Figure"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 10.1. 3-node group deployed across three Brokers.</fo:block><fo:block id="d0e9788"><fo:external-graphic src="url(images/HA-Overview.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Currently, the only virtualhost/virtualhost node type offering HA is BDB HA. Internally, |
| this leverages the HA capabilities of the Berkeley DB JE edition.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9796"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The HA solution from the Apache Qpid Broker-J is incompatible with the HA solution offered by the CPP |
| Broker. It is not possible to co-locate Qpid Broker-J and CPP Brokers within the same group.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-CreatingGroup"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Creating a group</fo:marker><fo:block font-size="20.735999999999997pt">10.3. Creating a group</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section describes how to create a group. At a high level, creating a group involves |
| first creating the first node standalone, then creating subsequent nodes referencing the first |
| node so the nodes can introduce themselves and gradually the group is built up.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A group is created through either <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management</fo:inline></fo:basic-link> |
| or the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link> |
| or the initial configuration (<fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration"><fo:inline>Appendix H, <fo:inline font-style="italic">BDB HA initial configuration</fo:inline></fo:inline></fo:basic-link> |
| illustrates how to use initial configuration for BDB HA group creation). |
| These instructions presume you are using Web Management. To illustrate the example it builds the group |
| illustrated in figure <fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA-Figure"><fo:inline>Figure 10.1, “3-node group deployed across three Brokers.”</fo:inline></fo:basic-link></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e9816"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9817"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Install a Broker on each machine that will be used to host the group. As messaging |
| clients will need to be able to connect to and authentication to all Brokers, it usually |
| makes sense to choose a common authentication mechanism e.g. Simple LDAP Authentication, |
| External with SSL client authentication or Kerberos.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9820"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Select one Broker instance to host the first node instance. This choice is an |
| arbitrary one. The node is special only whilst creating group. Once creation is |
| complete, all nodes will be considered equal.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9823"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Click the <fo:inline font-family="monospace">Add</fo:inline> button on the Virtualhost Panel on the Broker |
| tab.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e9831"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9832"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the Virtualhost node a unique name e.g. <fo:inline font-family="monospace">weather1</fo:inline>. The |
| name must be unique within the group and unique to that Broker. It is best if the |
| node names are chosen from a different nomenclature than the machine names |
| themselves.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9838"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Choose <fo:inline font-family="monospace">BDB_HA</fo:inline> and select <fo:inline font-family="monospace">New group</fo:inline> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9847"><fo:list-item-label end-indent="label-end()"><fo:block>c.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the group a name e.g. <fo:inline font-family="monospace">weather</fo:inline>. The group name must be |
| unique and will be the name also given to the virtualhost, so this is the name the |
| messaging clients will use in their connection url.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9853"><fo:list-item-label end-indent="label-end()"><fo:block>d.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the address of this node. This is an address on this node's host that |
| will be used for replication purposes. The hostname <fo:inline font-style="italic">must</fo:inline> be |
| resolvable by all the other nodes in the group. This is separate from the address |
| used by messaging clients to connect to the Broker. It is usually best to choose a |
| symbolic name, rather than an IP address.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9859"><fo:list-item-label end-indent="label-end()"><fo:block>e.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Now add the node addresses of all the other nodes that will form the group. In |
| our example we are building a three node group so we give the node addresses of |
| <fo:inline font-family="monospace">chaac:5000</fo:inline> and <fo:inline font-family="monospace">indra:5000</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9868"><fo:list-item-label end-indent="label-end()"><fo:block>f.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Click Add to create the node. The virtualhost node will be created with the |
| virtualhost. As there is only one node at this stage, the role will be |
| master.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9872"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 10.2. Creating 1st node in a group</fo:block><fo:block id="d0e9875"><fo:external-graphic src="url(images/HA-Create-1.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9882"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Now move to the second Broker to be the group. Click the <fo:inline font-family="monospace">Add</fo:inline> |
| button on the Virtualhost Panel on the Broker tab of the second Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e9890"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9891"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the Virtualhost node a unique name e.g. |
| <fo:inline font-family="monospace">weather2</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9897"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Choose <fo:inline font-family="monospace">BDB_HA</fo:inline> and choose <fo:inline font-family="monospace">Existing group</fo:inline> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9906"><fo:list-item-label end-indent="label-end()"><fo:block>c.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the details of the <fo:inline font-style="italic">existing node</fo:inline>. Following our |
| example, specify <fo:inline font-family="monospace">weather</fo:inline>, <fo:inline font-family="monospace">weather1</fo:inline> and |
| <fo:inline font-family="monospace">thor:5000</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9920"><fo:list-item-label end-indent="label-end()"><fo:block>d.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the address of this node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9923"><fo:list-item-label end-indent="label-end()"><fo:block>e.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Click Add to create the node. The node will use the existing details to |
| contact it and introduce itself into the group. At this stage, the group will have |
| two nodes, with the second node in the replica role.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9926"><fo:list-item-label end-indent="label-end()"><fo:block>f.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Repeat these steps until you have added all the nodes to the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9930"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 10.3. Adding subsequent nodes to the group</fo:block><fo:block id="d0e9933"><fo:external-graphic src="url(images/HA-Create-2.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block> |
| </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The group is now formed and is ready for us. Looking at the virtualhost node of any of the |
| nodes shows a complete view of the whole group. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9942"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Figure 10.4. View of group from one node</fo:block><fo:block id="d0e9945"><fo:external-graphic src="url(images/HA-Create-3.png)" width="100%" height="auto" content-width="scale-to-fit" content-height="100%" content-type="content-type:image/png"/></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Behaviour of the Group</fo:marker><fo:block font-size="20.735999999999997pt">10.4. Behaviour of the Group</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This section first describes the behaviour of the group in its default configuration. It |
| then goes on to talk about the various controls that are available to override it. It |
| describes the controls available that affect the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ACID#Durability)"><fo:inline>durability</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ACID#Durability)">http://en.wikipedia.org/wiki/ACID#Durability</fo:basic-link>]</fo:inline> of transactions and |
| the data consistency between the master and replicas and thus make trade offs between |
| performance and reliability.</fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-Default-Behaviour"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Default Behaviour</fo:marker><fo:block font-size="17.28pt">10.4.1. Default Behaviour</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's first look at the behaviour of a group in default configuration.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the default configuration, for any messaging work to be done, there must be at least |
| <fo:inline font-style="italic">quorum</fo:inline> nodes present. This means for example, in a three node group, |
| this means there must be at least two nodes available.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a messaging client sends a transaction, it can be assured that, before the control |
| returns back to his application after the commit call that the following is true:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9972"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9973"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>At the master, the transaction is <fo:inline font-style="italic">written to disk and OS level caches |
| are flushed</fo:inline> meaning the data is on the storage device.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9979"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>At least quorum minus 1 replicas, <fo:inline font-style="italic">acknowledge the receipt of |
| transaction</fo:inline>. The replicas will write the data to the storage device |
| sometime later.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If there were to be a master failure immediately after the transaction was committed, |
| the transaction would be held by at least quorum minus one replicas. For example, if we had |
| a group of three, then we would be assured that at least one replica held the |
| transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the event of a master failure, if quorum nodes remain, those nodes hold an election. |
| The nodes will elect master the node with the most recent transaction. If two or more nodes |
| have the most recent transaction the group makes an arbitrary choice. If quorum number of |
| nodes does not remain, the nodes cannot elect a new master and will wait until nodes rejoin. |
| You will see later that manual controls are available allow service to be restored from |
| fewer than quorum nodes and to influence which node gets elected in the event of a |
| tie.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Whenever a group has fewer than quorum nodes present, the virtualhost will be |
| unavailable and messaging connections will be refused. If quorum disappears at the very |
| moment a messaging client sends a transaction that transaction will fail.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You will have noticed the difference in the synchronization policies applied the master |
| and the replicas. The replicas send the acknowledgement back before the data is written to |
| disk. The master synchronously writes the transaction to storage. This is an example of a |
| trade off between durability and performance. We will see more about how to control this |
| trade off later.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Synchronization Policy</fo:marker><fo:block font-size="17.28pt">10.4.2. Synchronization Policy</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">synchronization policy</fo:inline> dictates what a node must do when it |
| receives a transaction before it acknowledges that transaction to the rest of the |
| group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following options are available: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10003"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10004"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">SYNC</fo:inline>. The node must write the transaction to disk and flush |
| any OS level buffers before sending the acknowledgement. SYNC is offers the highest |
| durability but offers the least performance.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10009"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">WRITE_NO_SYNC</fo:inline>. The node must write the transaction to disk |
| before sending the acknowledgement. OS level buffers will be flush as some point |
| later. This typically provides an assurance against failure of the application but not |
| the operating system or hardware.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10014"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">NO_SYNC</fo:inline>. The node immediately sends the acknowledgement. The |
| transaction will be written and OS level buffers flushed as some point later. NO_SYNC |
| offers the highest performance but the lowest durability level. This synchronization |
| policy is sometimes known as <fo:inline font-style="italic">commit to the network</fo:inline>. Flushing |
| behavior can be influenced by virtual host context parameters "qpid.broker.bdbCommiterNotifyThreshold" |
| (defines threshold for amount of messages triggering BDB log flush to the disk) and |
| "qpid.broker.bdbCommiterWaitTimeout" (defines timeout for BDB log flush to the disk).</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to assign a one policy to the master and a different policy to the |
| replicas. These are configured as <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Attributes"><fo:inline> |
| attributes <fo:inline font-style="italic">localTransactionSynchronizationPolicy</fo:inline> and |
| <fo:inline font-style="italic">remoteTransactionSynchronizationPolicy</fo:inline> on the virtualhost</fo:inline></fo:basic-link>. |
| By default the master uses <fo:inline font-style="italic">SYNC</fo:inline> and replicas use |
| <fo:inline font-style="italic">NO_SYNC</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-NodePriority"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Node Priority</fo:marker><fo:block font-size="17.28pt">10.4.3. Node Priority</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Node priority can be used to influence the behaviour of the election algorithm. It is |
| useful in the case were you want to favour some nodes over others. For instance, if you wish |
| to favour nodes located in a particular data centre over those in a remote site. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A new master is elected among nodes with the most current set of log files. When there is a tie, |
| the priority is used as a tie-breaker to select amongst these nodes. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The node priority is set as an integer value. A priority of zero is used to ensure that a node cannot |
| be elected master, even if it has the most current set of files. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For convenience, the Web Management Console uses user friendly names for the priority integer values |
| in range from 0 to 3 inclusive. The following priority options are available: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10050"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10051"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Highest</fo:inline>. Nodes with this priority will be more favoured. In |
| the event of two or more nodes having the most recent transaction, the node with this |
| priority will be elected master. If two or more nodes have this priority the algorithm |
| will make an arbitrary choice. The priority value for option <fo:inline font-style="italic">Highest</fo:inline> is <fo:inline font-style="italic">3</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10062"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">High</fo:inline>. Nodes with this priority will be favoured but not as |
| much so as those with Highest. The priority value for this option is <fo:inline font-style="italic">2</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10070"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Normal</fo:inline>. This is a default election priority. |
| The priority value for this option is <fo:inline font-style="italic">1</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10078"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Never</fo:inline>. The node will never be elected <fo:inline font-style="italic">even if the |
| node has the most recent transaction</fo:inline>. The node will still keep up to date |
| with the replication stream and will still vote itself, but can just never be |
| elected. The priority value for this option is <fo:inline font-style="italic">0</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Node priority is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline> |
| attribute <fo:inline font-style="italic">priority</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed |
| at runtime and is effective immediately.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10098"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Use of the Never priority can lead to transaction loss. For example, consider a group |
| of three where replica-2 is marked as Never. If a transaction were to arrive and it be |
| acknowledged only by Master and Replica-2, the transaction would succeed. Replica 1 is |
| running behind for some reason (perhaps a full-GC). If a Master failure were to occur at |
| that moment, the replicas would elect Replica-1 even though Replica-2 had the most recent |
| transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Required Minimum Number Of Nodes</fo:marker><fo:block font-size="17.28pt">10.4.4. Required Minimum Number Of Nodes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This controls the required minimum number of nodes to complete a transaction and to |
| elect a new master. By default, the required number of nodes is set to |
| <fo:inline font-style="italic">Default</fo:inline> (which signifies quorum).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to reduce the required minimum number of nodes. The rationale for doing |
| this is normally to temporarily restore service from fewer than quorum nodes following an |
| extraordinary failure.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, consider a group of three. If one node were to fail, as quorum still |
| remained, the system would continue work without any intervention. If the failing node were |
| the master, a new master would be elected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">What if a further node were to fail? Quorum no longer remains, and the remaining node |
| would just wait. It cannot elect itself master. What if we wanted to restore service from |
| just this one node?</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In this case, Required Number of Nodes can be reduced to 1 on the remain node, allowing |
| the node to elect itself and service to be restored from the singleton. Required minimum |
| number of nodes is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline> |
| attribute <fo:inline font-style="italic">quorumOverride</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed |
| at runtime and is effective immediately.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10128"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The attribute must be used cautiously. Careless use will lead to lost transactions and |
| can lead to a <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))"><fo:inline>split-brain</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))">http://en.wikipedia.org/wiki/Split-brain_(computing)</fo:basic-link>]</fo:inline> in the event of a network partition. If used to temporarily restore |
| service from fewer than quorum nodes, it is <fo:inline font-style="italic">imperative</fo:inline> to revert it |
| to the Default value as the failed nodes are restored.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Allow to Operate Solo</fo:marker><fo:block font-size="17.28pt">10.4.5. Allow to Operate Solo</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This attribute only applies to groups containing exactly two nodes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> In a group of two, if a node were to fail then in default configuration work will cease |
| as quorum no longer exists. A single node cannot elect itself master. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">allow to operate solo</fo:inline> flag allows a node in a two node group to elect itself master and |
| to operate sole. It is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline> |
| attribute <fo:inline font-style="italic">designatedPrimary</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed |
| at runtime and is effective immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, consider a group of two where the master fails. Service will be interrupted |
| as the remaining node cannot elect itself master. To allow it to become master, apply the |
| <fo:inline font-family="monospace">allow to operate solo</fo:inline> flag to it. It will elect itself master and work can continue, albeit |
| from one node.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10165"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is imperative not to allow the <fo:inline font-family="monospace">allow to operate solo</fo:inline> flag to be set on both nodes at once. To |
| do so will mean, in the event of a network partition, a <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))"><fo:inline>split-brain</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))">http://en.wikipedia.org/wiki/Split-brain_(computing)</fo:basic-link>]</fo:inline> will |
| occur.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-MaximumMessageSize"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Maximum message size</fo:marker><fo:block font-size="17.28pt">10.4.6. Maximum message size</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Internally, BDB JE HA restricts the maximum size of replication stream records passed from the master |
| to the replica(s). This helps prevent DOS attacks. |
| If expected application maximum message size is greater than 5MB, the BDB JE setting |
| <fo:inline font-family="monospace">je.rep.maxMessageSize</fo:inline> and Qpid context variable <fo:inline font-family="monospace">qpid.max_message_size</fo:inline> |
| needs to be adjusted to reflect this in order to avoid running into the BDB HA JE limit. |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-NodeOperations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Node Operations</fo:marker><fo:block font-size="20.735999999999997pt">10.5. Node Operations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-NodeOperations-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Lifecycle</fo:marker><fo:block font-size="17.28pt">10.5.1. Lifecycle</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhost nodes can be stopped, started and deleted.</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10198"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10199"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Stop</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Stopping a master node will cause the node to temporarily leave the group. Any |
| messaging clients will be disconnected and any in-flight transaction rollbacked. The |
| remaining nodes will elect a new master if quorum number of nodes still remains.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Stopping a replica node will cause the node to temporarily leave the group too. |
| Providing quorum still exists, the current master will continue without interruption. If |
| by leaving the group, quorum no longer exists, all the nodes will begin waiting, |
| disconnecting any messaging clients, and the virtualhost will become unavailable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A stopped virtualhost node is still considered to be a member of the group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10209"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Start</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Starting a virtualhost node allows it to rejoin the group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the group already has a master, the node will catch up from the master and then |
| become a replica once it has done so.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the group did not have quorum and so had no master, but the rejoining of this |
| node means quorum now exists, an election will take place. The node with the most up to |
| date transaction will become master unless influenced by the priority rules described |
| above.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10219"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The length of time taken to catch up will depend on how long the node has been |
| stopped. The worst case is where the node has been stopped for more than one hour. In |
| this case, the master will perform an automated <fo:inline font-family="monospace">network restore</fo:inline>. |
| This involves streaming all the data held by the master over to the replica. This |
| could take considerable time.</fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10225"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Delete</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost node can be deleted. Deleting a node permanently removes the node from |
| the group. The data stored locally is removed but this does not affect the data held by |
| the remainder of the group.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10231"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The names of deleted virtualhost node cannot be reused within a group.</fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is also possible to add nodes to an existing group using the procedure described |
| above.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-NodeOperations-TransferMaster"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Transfer Master</fo:marker><fo:block font-size="17.28pt">10.5.2. Transfer Master</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This operation allows the mastership to be moved from node to node. This is useful for |
| restoring a business as usual state after a failure.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using this function, the following occurs. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e10243"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10244"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The system first gives time for the chosen new master to become reasonable up to |
| date. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10247"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>It then suspends transactions on the old master and allows the chosen node to |
| become up to date.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10250"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The suspended transactions are aborted and any messaging clients connected to the |
| old master are disconnected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10253"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The chosen master becomes the new master. The old master becomes a replica.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10256"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Messaging clients reconnect the new master.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-ClientFailover"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Client failover</fo:marker><fo:block font-size="20.735999999999997pt">10.6. Client failover</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">As mentioned above, the clients need to be able to find the location of the active |
| virtualhost within the group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Clients can do this using a static technique, for example , utilising the failover feature of the Apache Qpid |
| JMS and Apache Qpid JMS AMQP 0-x clients where the client has a list of all the nodes, and tries each node in |
| sequence until it discovers the node with the active virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another possibility is a dynamic technique utilising a proxy or Virtual IP (VIP). These |
| require other software and/or hardware and are outside the scope of this document.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-DiskSpace"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Disk space requirements</fo:marker><fo:block font-size="20.735999999999997pt">10.7. Disk space requirements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case where node in a group are down, the master must keep the data they are missing |
| for them to allow them to return to the replica role quickly.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default, the master will retain up to 1hour of missed transactions. In a busy |
| production system, the disk space occupied could be considerable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This setting is controlled by virtualhost context variable |
| <fo:inline font-family="monospace">je.rep.repStreamTimeout</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Network-Requirements"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Network Requirements</fo:marker><fo:block font-size="20.735999999999997pt">10.8. Network Requirements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The HA Cluster performance depends on the network bandwidth, its use by existing traffic, |
| and quality of service.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to achieve the best performance it is recommended to use a separate network |
| infrastructure for the Qpid HA Nodes which might include installation of dedicated network |
| hardware on Broker hosts, assigning a higher priority to replication ports, installing a group |
| in a separate network not impacted by any other traffic.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Security"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Security</fo:marker><fo:block font-size="20.735999999999997pt">10.9. Security</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The replication stream between the master and the replicas is insecure and can be |
| intercepted by anyone having access to the replication network.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to reduce the security risks the entire HA group is recommended to run in a |
| separate network protected from general access and/or utilise SSH-tunnels/IPsec.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Backup"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Backups</fo:marker><fo:block font-size="20.735999999999997pt">10.10. Backups</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is recommend to use the hot backup script to periodically backup every node in the |
| group. <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"><fo:inline>Section 11.2.2, “BDB-HA”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Reset-Group-Infomational"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Reset Group Information</fo:marker><fo:block font-size="20.735999999999997pt">10.11. Reset Group Information</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BDB JE internally stores details of the group within its database. There are some |
| circumstances when resetting this information is useful.<fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10306"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10307"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Copying data between environments (e.g. production to UAT)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10310"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Some disaster recovery situations where a group must be recreated on new |
| hardware</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is not an normal operation and is not usually required</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following command replaces the group table contained within the JE logs files with the |
| provided information. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10317"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 10.1. Resetting of replication group with <fo:inline font-family="monospace">DbResetRepGroup</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">java</fo:inline> -cp je-7.4.5.jar com.sleepycat.je.rep.util.DbResetRepGroup -h <fo:inline font-family="monospace" font-style="italic">path/to/jelogfiles</fo:inline> <fo:block/> -groupName <fo:inline font-family="monospace" font-style="italic">newgroupname</fo:inline> -nodeName <fo:inline font-family="monospace" font-style="italic">newnodename</fo:inline> -nodeHostPort <fo:inline font-family="monospace" font-style="italic">newhostname:5000</fo:inline> </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The modified log files can then by copied into |
| <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline> directory of a target Broker. Then |
| start the Broker, and add a BDB HA Virtualhost node specify the same group name, node name and |
| node address. You will then have a group with a single node, ready to start re-adding |
| additional nodes as described above. </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Backup And Recovery</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Backup And Recovery</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Backup-And-Recovery"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 11. Backup And Recovery</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Broker"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker</fo:marker><fo:block font-size="20.735999999999997pt">11.1. Broker</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To perform a complete backup whilst the Broker is shutdown, simply copy all the files the |
| exist beneath <fo:inline font-family="monospace">${QPID_WORK}</fo:inline>, assuming all virtualhost nodes and virtualhost |
| are in their standard location, this will copy all configuration and persistent message data. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There is currently no safe mechanism to take a complete copy of the entire Broker whilst |
| it is running.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhost Node</fo:marker><fo:block font-size="20.735999999999997pt">11.2. Virtualhost Node</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To perform a complete backup of a Virtualhost node whilst it is stopped (or Broker down), |
| simply copy all the files the exist beneath |
| <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline>, assuming the virtualhost node is in |
| the standard location. This will copy all configuration that belongs to that virtualhost |
| node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The technique for backing up a virtualhost node whilst it is running depends on its |
| type.</fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">BDB</fo:marker><fo:block font-size="17.28pt">11.2.1. BDB</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BDB module includes the "hot" backup utility <fo:inline font-family="monospace">org.apache.qpid.server.store.berkeleydb.BDBBackup</fo:inline>. |
| This utility can perform the backup when the broker is running.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You can run this class from command line like in an example below:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10385"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example 11.1. Performing store backup by using <fo:inline font-family="monospace">BDBBackup</fo:inline> class |
| directly</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">java</fo:inline> -cp <fo:inline font-family="monospace" font-style="italic">"${QPID_HOME}/lib/*"</fo:inline> org.apache.qpid.server.store.berkeleydb.BDBBackup \ <fo:block/> -fromdir <fo:inline font-family="monospace" font-style="italic">${QPID_WORK}/<nodename>/config</fo:inline> -todir <fo:inline font-family="monospace" font-style="italic">path/to/backup/folder</fo:inline> </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the example above BDBBackup utility is called to backup the store at |
| <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline> and copy store logs into |
| <fo:inline font-family="monospace">path/to/backup/folder</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">BDB-HA</fo:marker><fo:block font-size="17.28pt">11.2.2. BDB-HA</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"><fo:inline>Section 11.2.1, “BDB”</fo:inline></fo:basic-link></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10423"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">BDB-HA VirtualHost node backups are node specific. You cannot use the backup of one node to recover a different node. To backup a group a backup of each node needs to be taken separately.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-Derby"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Derby</fo:marker><fo:block font-size="17.28pt">11.2.3. Derby</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not yet supported</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JDBC"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">JDBC</fo:marker><fo:block font-size="17.28pt">11.2.4. JDBC</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The responsibility for backup is delegated to the database server itself. See the |
| documentation accompanying it. Any technique that takes a consistent snapshot of the |
| database is acceptable.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">JSON</fo:marker><fo:block font-size="17.28pt">11.2.5. JSON</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JSON stores its config in a single text file. It can be safely backed up using standard |
| command line tools.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Virtualhost</fo:marker><fo:block font-size="20.735999999999997pt">11.3. Virtualhost</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To perform a complete backup of a Virtualhost whilst it is stopped (or Broker down), |
| simply copy all the files the exist beneath |
| <fo:inline font-family="monospace">${QPID_WORK}/<name>/messages</fo:inline>, assuming the virtualhost is in the |
| standard location. This will copy all messages that belongs to that virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The technique for backing up a virtualhost whilst it is running depends on its |
| type.</fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">BDB</fo:marker><fo:block font-size="17.28pt">11.3.1. BDB</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Use the same backup utility described above, but use the path |
| <fo:inline font-family="monospace">${QPID_WORK}/<name>/messages</fo:inline> instead.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Derby"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Derby</fo:marker><fo:block font-size="17.28pt">11.3.2. Derby</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Not yet supported</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">JDBC</fo:marker><fo:block font-size="17.28pt">11.3.3. JDBC</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The responsibility for backup is delegated to the database server itself. See the |
| documentation accompanying it. Any technique that takes a consistent snapshot of the |
| database is acceptable.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Provided"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Provided</fo:marker><fo:block font-size="17.28pt">11.3.4. Provided</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The contents of the virtualhost will be backed up as part of virtualhost node that |
| contains it.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">BDB-HA</fo:marker><fo:block font-size="17.28pt">11.3.5. BDB-HA</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The contents of the virtualhost will be backed up as part of virtualhost node that |
| contains it.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Environment Variables</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Environment Variables</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-Environment-Variables"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix A. Environment Variables</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following table describes the environment variables understood by the Qpid scripts |
| contained within the <fo:inline font-family="monospace">/bin</fo:inline> directory within the Broker distribution.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To take effect, these variables must be set within the shell (and exported - if using Unix) |
| before invoking the script.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10490"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table A.1. Environment variables</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Environment variable</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Default</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Home"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_HOME</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The variable used to tell the Broker its installation directory. It must be an |
| absolute path. This is used to determine the location of Qpid's dependency JARs and |
| some configuration files.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Typically the value of this variable will look similar to |
| <fo:inline font-family="monospace">c:\qpid\qpid-broker\\9.2.0</fo:inline> (Windows) or |
| <fo:inline font-family="monospace">/usr/local/qpid/qpid-broker/9.2.0</fo:inline> (Unix). The |
| installation prefix will differ from installation to installation. </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If not set, a value for <fo:inline font-family="monospace">QPID_HOME</fo:inline> is derived from the location |
| of the script itself.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Work"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_WORK</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User's home directory</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used as the default root directory for any data written by the Broker. This is the |
| default location for any message data written to persistent stores and the Broker's |
| log file.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, <fo:inline font-family="monospace">QPID_WORK=/var/qpidwork</fo:inline>.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_OPTS</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for passing <fo:basic-link internal-destination="Java-Broker-Appendix-System-Properties"><fo:inline>Java system properties</fo:inline></fo:basic-link> to the |
| Broker. The value must be a list of system properties each separate by a space. |
| <fo:inline font-family="monospace">-D<fo:inline font-family="monospace" font-style="italic">name1</fo:inline>=<fo:inline font-family="monospace" font-style="italic">value1</fo:inline> |
| -D<fo:inline font-family="monospace" font-style="italic">name2</fo:inline>=<fo:inline font-family="monospace" font-style="italic">value2</fo:inline></fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Gc"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_JAVA_GC</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:inline font-family="monospace">-XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC</fo:inline> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for customising garbage collection behaviour. The |
| value should contain valid garbage collection options(s) for the target JVM.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_JAVA_MEM</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:inline font-family="monospace">-Xmx512m -XX:MaxDirectMemorySize=1536m</fo:inline> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for customising the size of the JVM's heap and |
| direct memory. |
| The value should contain valid memory option(s) for the target JVM. Oracle JVMs |
| understand <fo:inline font-family="monospace">-Xmx</fo:inline> to specify a maximum heap size, |
| <fo:inline font-family="monospace">-Xms</fo:inline> an initial size, and |
| <fo:inline font-family="monospace">-XX:MaxDirectMemorySize</fo:inline> for the maximum amount of direct |
| memory.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, <fo:inline font-family="monospace">QPID_JAVA_MEM="-Xmx6g -XX:MaxDirectMemorySize=12g"</fo:inline> would |
| set a maximum heap size of 6GB and 12GB of direct memory.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Java-Opts"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>JAVA_OPTS</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>None</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for passing any other JVM options. This variable is |
| commonly used to pass options for diagnostic purposes, for instance to turn on verbose |
| GC. <fo:inline font-family="monospace">-verbose:gc</fo:inline>.</fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>System Properties</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>System Properties</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-System-Properties"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix B. System Properties</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following table describes the Java system properties used by the Broker to control |
| various optional behaviours.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The preferred method of enabling these system properties is using the <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:inline><fo:inline font-family="monospace">QPID_OPTS</fo:inline></fo:inline></fo:basic-link> environment variable described in the previous |
| section.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10658"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table B.1. System properties</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">System property</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Default</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-System-Properties-Broker-Heartbeat-Timeout-Factor"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>qpid.broker_heartbeat_timeout_factor</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>2</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Factor to determine the maximum length of that may elapse between heartbeats being |
| received from the peer before a connection is deemed to have been broken.</fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-System-Properties-Broker-Status-Updates"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>qpid.broker_status_updates</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>true</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If set true, the Broker will produce operational logging messages.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-System-Properties-Broker-Disabled-Features"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>qpid.broker_disabled_features</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>none</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allows optional Broker features to be disabled. Currently understood feature |
| names are: <fo:inline font-family="monospace">qpid.jms-selector</fo:inline></fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Feature names should be comma separated.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Operational Logging</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Operational Logging</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-Operation-Logging"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix C. Operational Logging</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker will, by default, produce structured log messages in response to key events in |
| the lives of objects within the Broker. These concise messages are designed to allow the user to |
| understand the actions of the Broker in retrospect. This is valuable for problem diagnosis and |
| provides a useful audit trail.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Each log message includes details of the entity causing the action (e.g. a management user |
| or messaging client connection), the entity receiving the action (e.g. a queue or connection) |
| and a description of operation itself.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log messages have the following format:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e10716"> |
| [<fo:inline font-family="monospace">Actor</fo:inline>] {[<fo:inline font-family="monospace">Subject</fo:inline>]} [<fo:inline font-family="monospace">Message Id</fo:inline>] [<fo:inline font-family="monospace">Message Text</fo:inline>] |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10732"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10733"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">Actor</fo:inline> is the entity within the Broker that is |
| <fo:inline font-style="italic">performing</fo:inline> the action. There are actors corresponding to the Broker |
| itself, Management, Connection, and Channels. Their format is described in the <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Actor-Format"><fo:inline>table</fo:inline></fo:basic-link> below.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10744"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">Subject</fo:inline> (optional) is the entity within the Broker that is |
| <fo:inline font-style="italic">receiving</fo:inline> the action. There are subjects corresponding to the |
| Connections, Channels, Queues, Exchanges, Subscriptions, and Message Stores. Their format is |
| described in the <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Subject-Format"><fo:inline>table</fo:inline></fo:basic-link> below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Some actions are reflexive, in these cases the Actor and Subject will be equal.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10757"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">Message Id</fo:inline> is an identifier for the type of message. It has the form |
| three alphas and four digits separated by a hyphen <fo:inline font-family="monospace">AAA-9999</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10765"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">Message Text</fo:inline> is a textual description</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To illustrate, let's look at two examples.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-CON-1001"><fo:inline>CON-1001</fo:inline></fo:basic-link></fo:inline> is used when a messages client makes an AMQP connection. The |
| connection actor (<fo:inline font-family="monospace">con</fo:inline>) provides us with details of the peer's connection: the |
| user id used by the client (myapp1), their IP, ephemeral port number and the name of the virtual |
| host. The message text itself gives us further details about the connection: the client id, the |
| protocol version in used, and details of the client's qpid library.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e10780">[con:8(myapp1@/127.0.0.1:52851/default)] CON-1001 : Open : Destination : AMQP(127.0.0.1:5672) : Protocol Version : 0-10 : Client ID : myapp1 : Client Version : 9.2.0 : Client Product : qpid</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace"><fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-QUE-1001"><fo:inline>QUE-1001</fo:inline></fo:basic-link></fo:inline> is used when a queue is created. The connection actor |
| <fo:inline font-family="monospace">con</fo:inline> tells us details of the connection performing the queue creation: the |
| user id used by the client (myapp1), the IP, ephemeral port number and the name of the virtual |
| host. The queue subject tells use the queue's name (myqueue) and the virtualhost. The message |
| itself tells us more information about the queue that is being created. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e10790">[con:8(myapp1@/127.0.0.1:52851/default)/ch:0] [vh(/default)/qu(myqueue)] QUE-1001 : Create : Owner: myapp1 Transient</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The first two tables that follow describe the actor and subject entities, then the later |
| provide a complete catalogue of all supported messages.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Actor-Format"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.1. Actors Entities</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Actor Type</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Format and Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Broker</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>[Broker]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used during startup and shutdown</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Management</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [mng:<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>(<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>)] </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by the Web Management interfaces.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Connection</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by a client connection. Note that connections are |
| numbered by a sequence number that begins at 1.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Channel</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>/ch:<fo:inline font-family="monospace" font-style="italic">channelnumber</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by a client's channel (corresponds to the JMS |
| concept of Session). Note that channels are numbered by a sequence number that is |
| scoped by the owning connection.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Group</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> [grp(/<fo:inline font-family="monospace" font-style="italic">groupname</fo:inline>)/vhn(/<fo:inline font-family="monospace" font-style="italic">virtualhostnode |
| name</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for HA. Used for operations performed by the system itself often as a result |
| of actions performed on another node..</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Subject-Format"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.2. Subject Entities</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Subject Type</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Format and Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Connection</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A connection to the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Channel</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>/ch:<fo:inline font-family="monospace" font-style="italic">channelnumber</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A client's channel within a connection.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Subscription</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [sub:<fo:inline font-family="monospace" font-style="italic">subscriptionnumber</fo:inline>(vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/qu(<fo:inline font-family="monospace" font-style="italic">queuename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A subscription to a queue. This corresponds to the JMS concept of a |
| Consumer.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Queue</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>[vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/qu(<fo:inline font-family="monospace" font-style="italic">queuename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue on a virtualhost</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Exchange</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>[vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/ex(<fo:inline font-family="monospace" font-style="italic">exchangetype</fo:inline>/<fo:inline font-family="monospace" font-style="italic">exchangename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An exchange on a virtualhost</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Binding</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/ex(<fo:inline font-family="monospace" font-style="italic">exchangetype</fo:inline>/<fo:inline font-family="monospace" font-style="italic">exchangename</fo:inline>)/qu(<fo:inline font-family="monospace" font-style="italic">queuename</fo:inline>)/rk(<fo:inline font-family="monospace" font-style="italic">bindingkey</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A binding between a queue and exchange with the giving binding key.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Message Store</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| [vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/ms(<fo:inline font-family="monospace" font-style="italic">messagestorename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost/message store on the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA Group</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> [grp(/<fo:inline font-family="monospace" font-style="italic">group name</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A HA group</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following tables lists all the operation log messages that can be produced by the |
| Broker, and the describes the circumstances under which each may be seen.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Broker"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.3. Broker Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Startup : Version: <fo:inline font-family="monospace" font-style="italic">version</fo:inline> Build: |
| <fo:inline font-family="monospace" font-style="italic">build</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is starting up</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Starting : Listening on <fo:inline font-family="monospace" font-style="italic">transporttype</fo:inline> port |
| <fo:inline font-family="monospace" font-style="italic">portnumber</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker has begun listening on a port.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Shutting down : <fo:inline font-family="monospace" font-style="italic">transporttype</fo:inline> port |
| <fo:inline font-family="monospace" font-style="italic">portnumber</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker has stopped listening on a port.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Qpid Broker Ready</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is ready for normal operations.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Stopped</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is stopped.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Using configuration : <fo:inline font-family="monospace" font-style="italic">file</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the name of the configuration store in use by the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:inline font-family="monospace" font-style="italic">delivered|received</fo:inline> : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> |
| kB/s peak : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes total</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistic - bytes delivered or received by the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:inline font-family="monospace" font-style="italic">delivered|received</fo:inline> : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> |
| msg/s peak : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> msgs total</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistic - messages delivered or received by the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Platform : JVM : <fo:inline font-family="monospace" font-style="italic">vendor</fo:inline> version: <fo:inline font-family="monospace" font-style="italic">version |
| </fo:inline> OS : <fo:inline font-family="monospace" font-style="italic">operating system vendor</fo:inline> version: |
| <fo:inline font-family="monospace" font-style="italic">operating system version</fo:inline>} arch: <fo:inline font-family="monospace" font-style="italic">processor |
| architecture</fo:inline> cores: <fo:inline font-family="monospace" font-style="italic">number of CPU cores</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Key information about the environment hosting the Broker</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Maximum Memory : Heap : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes Direct : <fo:inline font-family="monospace" font-style="italic"> |
| bytes</fo:inline> size</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Configured memory paramters for the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Management Mode : User Details : <fo:inline font-family="monospace" font-style="italic">management node user id</fo:inline> / |
| <fo:inline font-family="monospace" font-style="italic">management mode password</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used when Broker is started in management mode to indicate the |
| management credentials that may be used connect to the Broker.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1016"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1016</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Fatal error : <fo:inline font-family="monospace" font-style="italic">root cause</fo:inline> : See log file for more information</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that broker was shut down due to fatal error.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1017"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1017</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Process : PID <fo:inline font-family="monospace" font-style="italic">process identifier</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Process identifier (PID) of the Broker process.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1018"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1018</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Management"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.4. Management Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:inline font-family="monospace" font-style="italic">type</fo:inline> Management Startup </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is starting up. Supported by Web management plugin.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Starting : <fo:inline font-family="monospace" font-style="italic">type</fo:inline> : Listening on <fo:inline font-family="monospace" font-style="italic">transporttype</fo:inline> port |
| <fo:inline font-family="monospace" font-style="italic">port</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is listening on the given port.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Shutting down : <fo:inline font-family="monospace" font-style="italic">type</fo:inline> : port |
| <fo:inline font-family="monospace" font-style="italic">port</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is ceasing to listen on the given port.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:inline font-family="monospace" font-style="italic">type</fo:inline> Management Ready</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is ready for work.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block><fo:inline font-family="monospace" font-style="italic">type</fo:inline> Management Stopped</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is stopped.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Open : User <fo:inline font-family="monospace" font-style="italic">username</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the opening of a connection to Management has by the given |
| username.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Close : User <fo:inline font-family="monospace" font-style="italic">username</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the closing of a connection to Management has by the given |
| username.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.5. Virtual Host Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Created : <fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a virtualhost has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Closed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a virtualhost has been closed. This occurs on Broker |
| shutdown.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Unexpected fatal error</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhost has suffered an unexpected fatal error, check the logs for more |
| details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Filesystem is over <fo:inline font-family="monospace" font-style="italic">size in %</fo:inline> per cent full, enforcing flow control.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that virtual host flow control is activated |
| when the usage of file system containing Virtualhost message store exceeded predefined limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Filesystem is no longer over <fo:inline font-family="monospace" font-style="italic">size in %</fo:inline> per cent full.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that virtual host flow control is deactivated |
| when the usage of file system containing Virtualhost message falls under predefined limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.6. Queue Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create : Owner: <fo:inline font-family="monospace" font-style="italic">owner</fo:inline> |
| <fo:inline font-family="monospace" font-style="italic">AutoDelete</fo:inline> [<fo:inline font-family="monospace" font-style="italic">Durable</fo:inline>] |
| <fo:inline font-family="monospace" font-style="italic">Transient</fo:inline> Priority: |
| <fo:inline font-family="monospace" font-style="italic">numberofpriorities</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Deleted</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has been deleted.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| Overfull : Size : <fo:inline font-family="monospace" font-style="italic">size in bytes</fo:inline>, Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in bytes</fo:inline>, |
| Messages : <fo:inline font-family="monospace" font-style="italic">size in messages</fo:inline>, Message Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in messages</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has exceeded its permitted capacity when |
| <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy is used. |
| See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| Underfull : Size : <fo:inline font-family="monospace" font-style="italic">size in bytes</fo:inline>, Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in bytes</fo:inline>, |
| Messages : <fo:inline font-family="monospace" font-style="italic">size in messages</fo:inline>, Message Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in messages</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Indicates that a queue has fallen to its resume capacity when |
| <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy is used. |
| See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| Dropped : <fo:inline font-family="monospace" font-style="italic">number</fo:inline> messages, Depth : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes, |
| <fo:inline font-family="monospace" font-style="italic">size</fo:inline> messages, Capacity : <fo:inline font-family="monospace" font-style="italic">limit</fo:inline> bytes, |
| <fo:inline font-family="monospace" font-style="italic">limit</fo:inline> messages |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Indicates that a given number of messages is deleted when <fo:inline font-style="italic">Ring</fo:inline> overflow policy is |
| used and any of queue capacity limits is breached . |
| See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1016"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1016</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.7. Exchange Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create : [<fo:inline font-family="monospace" font-style="italic">Durable</fo:inline>] Type: <fo:inline font-family="monospace" font-style="italic">type</fo:inline> |
| Name: <fo:inline font-family="monospace" font-style="italic">exchange name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Deleted</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange has been deleted.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Discarded Message : Name: <fo:inline font-family="monospace" font-style="italic">exchange name</fo:inline> Routing Key: |
| <fo:inline font-family="monospace" font-style="italic">routing key</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange received a message that could not be routed to at least |
| one queue. queue has exceeded its permitted capacity. See <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link> for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Binding"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.8. Binding Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BND-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BND-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create : Arguments : <fo:inline font-family="monospace" font-style="italic">arguments</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a binding has been made between an exchange and a queue.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BND-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BND-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Deleted</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a binding has been deleted</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Connection"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.9. Connection Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Open : Destination : <fo:inline font-family="monospace" font-style="italic">target port</fo:inline> : Protocol Version : |
| <fo:inline font-family="monospace" font-style="italic">protocol version</fo:inline> : Client ID : <fo:inline font-family="monospace" font-style="italic">clientid</fo:inline> : |
| Client Version : <fo:inline font-family="monospace" font-style="italic">client version</fo:inline> : |
| Client Product : <fo:inline font-family="monospace" font-style="italic">client product</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been opened. The Broker logs one of these message |
| each time it learns more about the client as the connection is negotiated.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Close</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been closed. This message is logged regardless of |
| if the connection is closed normally, or if the connection is somehow lost e.g network |
| error. </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Closed due to inactivity</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used when heart beating is in-use. Indicates that the connection has not received |
| a heartbeat for too long and is therefore closed as being inactive. </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Connection dropped</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been unexpectedly closed by the peer. This usually |
| occurs if a machine hosting an application fails or the application's process is |
| abruptly terminated.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Client version <fo:inline font-family="monospace" font-style="italic">version</fo:inline> logged by validation</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been received from client with a version number |
| that is configured to be logged. This feature may help teams manage software currency.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Client version <fo:inline font-family="monospace" font-style="italic">version</fo:inline> rejected by validation</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection attempt has been received from client with a version number |
| that is configured to be rejected. This feature may help manage software currency.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Connection close initiated by operator</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been closed by the actions of an |
| Operator using manangement.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Uncommitted transaction(s) contains <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes of incoming message data |
| exceeding <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes limit. Messages will be flowed to disk.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Warns that the transactions associated with this connection contain so much uncommitted data that |
| a threshold has been breached. The connection responds by flowing the messages already associated with the |
| transactions and any new messages to disk. The connection reverts to normal behaviour once the |
| quantity of uncommitted data falls beneath the threshold. Normally this happens when the transactions |
| commit or rollback. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Open Transaction : <fo:inline font-family="monospace" font-style="italic">time</fo:inline> ms</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a messaging transaction has been open for longer than that |
| permitted. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link> for |
| more details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Idle Transaction : <fo:inline font-family="monospace" font-style="italic">time</fo:inline> ms</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a messaging transaction has been idle for longer than that |
| permitted. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link> for |
| more details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Channel"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.10. Channel Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel (corresponds to the JMS concept of Session) has been |
| created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Flow Started</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates message flow to a session has begun.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Close</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has been closed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Prefetch Size (bytes) <fo:inline font-family="monospace" font-style="italic">size</fo:inline> : Count <fo:inline font-family="monospace" font-style="italic">number |
| of messages</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the prefetch size in use by a channel.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Flow Control Enforced (Queue <fo:inline font-family="monospace" font-style="italic">queue name</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that producer flow control has been imposed on a channel owning to |
| excessive queue depth in the indicated queue. Produces using the channel will be |
| requested to pause the sending of messages. |
| See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for more details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Flow Control Removed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that producer flow control has been removed from a channel. |
| See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for more details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Discarded message : <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> as no alternate |
| exchange configured for queue : <fo:inline font-family="monospace" font-style="italic">queue name</fo:inline>{1} routing key : |
| <fo:inline font-family="monospace" font-style="italic">routing key</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has discarded a message as the maximum delivery count has |
| been exceeded but the queue defines no alternate exchange. See <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:inline>Section 9.4.2, “Maximum Delivery Count”</fo:inline></fo:basic-link> for more details. Note that <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> is an |
| internal message reference.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Discarded message : <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> as no binding on |
| alternate exchange : <fo:inline font-family="monospace" font-style="italic">exchange name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has discarded a message as the maximum delivery count has |
| been exceeded but the queue's alternate exchange has no binding to a queue. See <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:inline>Section 9.4.2, “Maximum Delivery Count”</fo:inline></fo:basic-link> for more details. Note that <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> is an |
| internal message reference.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Message : <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> moved to dead letter queue : |
| <fo:inline font-family="monospace" font-style="italic">queue name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has moved a message to the named dead letter queue |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Flow Control Ignored. Channel will be closed.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel violating the imposed flow control has been closed |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1014"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1014</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.11. Subscription Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create : [<fo:inline font-family="monospace" font-style="italic">Durable</fo:inline>] Arguments : |
| <fo:inline font-family="monospace" font-style="italic">arguments</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription (corresponds to JMS concept of a MessageConsumer) |
| has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Close</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription has been closed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>SUB-1003 : Suspended for <fo:inline font-family="monospace" font-style="italic">time</fo:inline> ms</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription has been in a suspened state for an unusual length |
| of time. This may be indicative of an consuming application that has stopped taking |
| messages from the consumer (i.e. a JMS application is not calling receive() or its |
| asynchronous message listener onMessage() is blocked in application code). It may also |
| indicate a generally overloaded system. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.12. Message Store Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Created</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a message store has been created. The message store is responsible |
| for the storage of the messages themselves, including the message body and any |
| headers.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store location : <fo:inline font-family="monospace" font-style="italic">path</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline> for the |
| location of the message store.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Closed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message store has been closed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovery Start</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that message recovery has begun.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovered <fo:inline font-family="monospace" font-style="italic">number of messages</fo:inline> messages.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that recovery recovered the given number of messages from the |
| store.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovered Complete</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message recovery is concluded.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store Passivated</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store is entering a passive state where is it unavailable for normal |
| operations. Currently this message is used by HA when the node is in replica |
| state.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store overfull, flow control will be enforced</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store has breached is maximum configured size. |
| See <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:inline>Section 9.2.1, “Disk quota-based flow control”</fo:inline></fo:basic-link> for details.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store overfull condition cleared</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store size has fallen beneath its resume capacity and therefore flow control |
| has been rescinded. See <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:inline>Section 9.2.1, “Disk quota-based flow control”</fo:inline></fo:basic-link> |
| for details. </fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.13. Transaction Store Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Created</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a transaction store has been created. The transaction store is |
| responsible for the storage of messages instances, that is, the presence of a message |
| on a queue.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store location : <fo:inline font-family="monospace" font-style="italic">path</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the transaction store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline> for |
| the location of the store.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Closed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the transaction store has been closed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovery Start</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that transaction recovery has begun.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-TXN"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovered <fo:inline font-family="monospace" font-style="italic">number</fo:inline> messages for queue |
| <fo:inline font-family="monospace" font-style="italic">name</fo:inline>.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that recovery recovered the given number of message instances for the |
| given queue.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovered Complete</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message recovery is concluded.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.14. Configuration Store Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Created</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a configuration store has been created. The configuration store is |
| responsible for the storage of the definition of objects such as queues, exchanges, |
| and bindings.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Store location : <fo:inline font-family="monospace" font-style="italic">path</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline> |
| for the location of the store.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Closed</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration store has been closed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovery Start</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that configuration recovery has begun.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Recovered Complete</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration recovery is concluded.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-HA"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.15. HA Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Created</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This HA node has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Deleted</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This HA node has been deleted</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Added : Node : '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A new node has been added to the group.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Removed : Node : '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node has been removed from the group. This removal is permanent.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Joined : Node : '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node has become reachable. This may be as a result of the node being |
| restarted, or a network problem may have been resolved.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Left : Node : '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node is no longer reachable. This may be as a result of the node being stopped |
| or a network partition may be preventing it from being connected. The node is still a |
| member of the group.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1007 : Master transfer requested : to '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a master transfer operation has been requested.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1008 : Intruder detected : Node '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an unexpected node has joined the group. The virtualhost node will |
| go into the ERROR state in response to the condition.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1009 : Insufficient replicas contactable</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node (which was in the master role) no longer has sufficient replica in |
| contact in order to complete transactions.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1010 : Role change reported: Node : '<fo:inline font-family="monospace" font-style="italic">name</fo:inline>' |
| (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>) : from <fo:inline font-family="monospace" font-style="italic">role</fo:inline> to |
| <fo:inline font-family="monospace" font-style="italic">role</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the node has changed role within the group.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1011 : Minimum group size : <fo:inline font-family="monospace" font-style="italic">new group size</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The quorum requirements from completing elections or transactions has been |
| changed.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1012 : Priority : <fo:inline font-family="monospace" font-style="italic">priority</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The priority of the object node has been changed. Zero indicates that the node |
| cannot be elected master.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1013"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1013</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1013 : Designated primary : <fo:inline font-family="monospace" font-style="italic">true|false</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node has been designated primary and can now operate solo. Applies to two |
| node groups only. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:inline>Section 10.4.5, “Allow to Operate Solo”</fo:inline></fo:basic-link></fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1014</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>HA-1014 : Diverged transactions discarded</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node is in the process of rejoining the group but has discovered that some |
| of its transactions differ from those of the current master. The node will |
| automatically roll-back (i.e. discard) the diverging transactions in order to be |
| allowed to rejoin the group. This situation can only usually occur as a result of use |
| of the weak durability options. These allow the group to operate with fewer than |
| quorum nodes and therefore allow the inconsistencies to develop. </fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On encountering this condition, it is <fo:inline font-style="italic">strongly</fo:inline> recommendend |
| to run an application level reconcilation to determine the data that has been |
| lost.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Port"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.16. Port Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Open</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been open</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Close</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been closed</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Connection count <fo:inline font-family="monospace" font-style="italic">number</fo:inline> within <fo:inline font-family="monospace" font-style="italic">warn limit</fo:inline> % of maximum <fo:inline font-family="monospace" font-style="italic">limit</fo:inline> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Warns that number of open connections approaches maximum allowed limit</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Connection from <fo:inline font-family="monospace" font-style="italic">peer</fo:inline> rejected. Maximum connection count (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) for this port already reached.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection from given host is rejected because of reaching the maximum allowed limit</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Unsupported protocol header received <fo:inline font-family="monospace" font-style="italic">header bytes</fo:inline>, replying with <fo:inline font-family="monospace" font-style="italic">AMQP version</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ususualy indicates an attempt to make an non-AMQP connection on an AMQP port, for instance, |
| with a web browser.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Connection from <fo:inline font-family="monospace" font-style="italic">address</fo:inline> rejected</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Incoming connection is rejected because the port's connection limits are |
| already reached.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>FAILED to bind <fo:inline font-family="monospace" font-style="italic">name</fo:inline> service to <fo:inline font-family="monospace" font-style="italic">port number</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The given port number could not be bound because it is already in-use.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Operation : <fo:inline font-family="monospace" font-style="italic">operation name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.17. Resource Limit Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-RL-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>RL-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Accept</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection has been accepted.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-RL-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>RL-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Reject</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection has been rejected.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-RL-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>RL-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Info</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An informational message regarding connection limits.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-User"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table C.18. User Log Messages</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Message Id</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Message Text / Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-USR-1001"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>USR-1001</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Create</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been created.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-USR-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>USR-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Update</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been updated.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-USR-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>USR-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>Delete</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been deleted.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Statistics Reporting</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Statistics Reporting</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-Statistics-Reporting"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix D. Statistics Reporting</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker has the ability to periodically write statistics of any entity within the system to |
| the log. Statistics reporting can be configured for a single entity (e.g. a queue) or for all entities of a |
| particular category (e.g. for all queues). The system can be configured dynamically at runtime without the need |
| for the system to be restarted.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature helps allow the behaviour of the overall system to be understood and can aid real-time problem |
| diagnosis.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It can be configured Broker-wide or separately for each virtual host.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The format of the statistics report is configurable.</fo:block><fo:block id="d0e12961"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Statistics Report Period</fo:marker><fo:block font-size="20.735999999999997pt">D.1. Statistics Report Period</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This governs the period with which statistics reports will be written to the log. The period is defined |
| in seconds. By default the statistics report period is zero, meaning the system is disabled. To enable the |
| statistics report set the <fo:inline font-style="italic">statistics reporting period</fo:inline> on either the Broker or virtualhost to |
| a non-zero value.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the period is defined, the system will respond to the statistic report patterns defined described next.</fo:block></fo:block><fo:block id="d0e12971"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Statistic Report Patterns</fo:marker><fo:block font-size="20.735999999999997pt">D.2. Statistic Report Patterns</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The statistic report pattern defines the format of a statistic report written to the log.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistic report patterns are defined by <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General"><fo:inline> |
| content variables</fo:inline></fo:basic-link>. The place where the context variable is defined governs the scope i.e. the entities to |
| which the pattern will be applied.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For instance, to define a statistics reporting pattern for a single queue, |
| <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables"><fo:inline>set the contextvariable |
| </fo:inline></fo:basic-link> on the queue itself. If you want the same statistics report pattern for apply to all queues, set the pattern on a |
| suitable ancestor of the queue. For instance, if set on virtualhost, the pattern will applied to all queues defined |
| on that virtualhost. If set on Broker, the pattern will be applied to all queues on the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The context variable name is formed as follows: |
| <fo:inline font-family="monospace">qpid.<category-name>.statisticsReportPattern</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For instance, for queue: <fo:inline font-family="monospace">qpid.queue.statisticsReportPattern</fo:inline> and virtualhost: |
| <fo:inline font-family="monospace">qpid.virtualhost.statisticsReportPattern</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The value of the context variable is a free text string containing reference(s) to the statistic names that |
| are to appear in the report. References are made by surrounding the name of the statistic with '$' and curly braces, |
| thus <fo:inline font-family="monospace">${<statistic-name>}</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistics references allow an optional formatters. The supported formatters are: <fo:inline font-family="monospace">:byteunit</fo:inline> |
| (produces a human readable byte value e.g. 3 MiB), <fo:inline font-family="monospace">:duration</fo:inline> (produces a ISO-8601 duration)and |
| <fo:inline font-family="monospace">:datetime</fo:inline> (produces a ISO-8601 date/time).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, a statistic report pattern for the <fo:inline font-family="monospace">queue</fo:inline> category specifying two queue |
| statistic values: <fo:inline font-family="monospace">queueDepthMessages=${queueDepthMessages},queueDepthBytes=${queueDepthBytes:byteunit}</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Like all context variables, the statistic report pattern can also reference the attributes of the entity |
| or even its ancestors. This feature can be exploited to include things like the name of the entity within the |
| report.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">These points are illustrated in the examples in the next section.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A catalogue of statistics names and descriptions is available from the REST API documentation available |
| through the <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="d0e13030"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Examples</fo:marker><fo:block font-size="20.735999999999997pt">D.3. Examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Adding a statistic reporting pattern to a single queue, called <fo:inline font-family="monospace">myqueue</fo:inline> using the REST API and |
| cURL. This example uses <fo:inline font-family="monospace">ancestor</fo:inline> references to include entity names:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13041"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example D.1. Enabling statistics for a single queue using the REST API and cURL</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13044">curl --user admin --data '{"name" : "qpid.queue.statisticsReportPattern", |
| "value" : "${ancestor:virtualhost:name}/${ancestor:queue:name}: queueDepthMessages=${queueDepthMessages}, |
| queueDepthBytes=${queueDepthBytes:byteunit}"}' https://localhost:8080/api/latest/queue/default/default/myqueue/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Once enabled, an example statistic report output written to the log might look like this: |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13048">INFO [virtualhost-default-pool-0] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=0, queueDepthBytes=0 B |
| INFO [virtualhost-default-pool-2] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=3, queueDepthBytes=345 B |
| INFO [virtualhost-default-pool-2] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=3, queueDepthBytes=345 B</fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Removing a statistic report pattern from the same queue:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13053"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example D.2. Disabling statistics for a single queue using the REST API and cURL</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13056"> |
| curl --user admin --data '{"name" : "qpid.queue.statisticsReportPattern"}' https://localhost:8080/api/latest/queue/default/default/myqueue/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Adding a statistic reporting pattern to all queues:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13060"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example D.3. Enabling statistics for all queues using the REST API and cURL</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13063">curl --user admin --data '{"name" : "qpid.queue.statisticsReportPattern", |
| "value" : "${ancestor:virtualhost:name}/${ancestor:queue:name}: |
| oldestMessageAge=${oldestMessageAge:duration}"}' https://localhost:8080/api/latest/virtualhost/default/default/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Once enabled, an example statistic report for a virtualhost with two queues might look like this: |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13067">INFO [virtualhost-default-pool-1] (q.s.Queue)- Statistics: default/myqueue1: oldestMessageAge=PT1M24S |
| INFO [virtualhost-default-pool-1] (q.s.Queue)- Statistics: default/myqueue2: oldestMessageAge=PT0S</fo:block> |
| </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Queue Alerts</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Queue Alerts</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-Queue-Alerts"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix E. Queue Alerts</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports a variety of queue alerting thresholds. Once configured on a queue, |
| these limits will be periodically written to the log if these limits are breached, until the |
| condition is rectified.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, if queue <fo:inline font-family="monospace">myqueue</fo:inline> is configured with a message count alert of |
| 1000, and then owing to a failure of a downstream system messages begin to accumulate on the |
| queue, the following alerts will be written periodically to the log. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13081">INFO [default:VirtualHostHouseKeepingTask] (queue.NotificationCheck) - MESSAGE_COUNT_ALERT On Queue myqueue - 1272: Maximum count on queue threshold (1000) breached. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Note that queue alerts are <fo:inline font-style="italic">soft</fo:inline> in nature; breaching the limit will |
| merely cause the alerts to be generated but messages will still be accepted to the queue.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table E.1. Queue Alerts</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Alert Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Alert Format and Purpose</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MESSAGE_COUNT_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> MESSAGE_COUNT_ALERT On Queue <fo:inline font-family="monospace" font-style="italic">queuename</fo:inline> - |
| <fo:inline font-family="monospace" font-style="italic">number of messages</fo:inline>: Maximum count on queue threshold |
| (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of messages on the given queue has breached its configured |
| limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MESSAGE_SIZE_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> MESSAGE_SIZE_ALERT On Queue <fo:inline font-family="monospace" font-style="italic">queuename</fo:inline> |
| -<fo:inline font-family="monospace" font-style="italic">message size</fo:inline> : Maximum message size threshold |
| (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. [Message ID=<fo:inline font-family="monospace" font-style="italic">message |
| id</fo:inline>]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The size of an individual messages has breached its configured limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUEUE_DEPTH_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> QUEUE_DEPTH_ALERT On Queue <fo:inline font-family="monospace" font-style="italic">queuename</fo:inline> - |
| <fo:inline font-family="monospace" font-style="italic">total size of all messages on queue</fo:inline> : Maximum queue depth |
| threshold (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The total size of all messages on the queue has breached its configured |
| limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MESSAGE_AGE_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>MESSAGE_AGE_ALERT On Queue <fo:inline font-family="monospace" font-style="italic">queuename</fo:inline> - <fo:inline font-family="monospace" font-style="italic">age |
| of message</fo:inline> : Maximum age on queue threshold |
| (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The age of a message on the given queue has breached its configured limit.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Miscellaneous</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Miscellaneous</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Miscellaneous"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix F. Miscellaneous</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-JVM-Verification"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">JVM Installation verification</fo:marker><fo:block font-size="20.735999999999997pt">F.1. JVM Installation verification</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-JVM-Verification-Windows"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Verify JVM on Windows</fo:marker><fo:block font-size="17.28pt">F.1.1. Verify JVM on Windows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the |
| following at the command prompt: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13196">echo %JAVA_HOME%</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If JAVA_HOME is set you will see something similar to the following: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13200">c:"\PROGRA~1"\Java\jdk-11.0.13\ |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Then confirm that a Java installation (11 or higher) is available: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13204">java -version</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If java is available on the path, output similar to the following will be seen: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13208">java version "11.0.13" 2021-10-19 LTS |
| Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370) |
| Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode</fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-JVM-Verification-Unix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Verify JVM on Unix</fo:marker><fo:block font-size="17.28pt">F.1.2. Verify JVM on Unix</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the |
| following at the command prompt: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13215">echo $JAVA_HOME</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If JAVA_HOME is set you will see something similar to the following: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13219">/usr/java/jdk-11.0.13 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Then confirm that a Java installation (11 or higher) is available: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13223">java -version</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If java is available on the path, output similar to the following will be seen: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13227">java version "11.0.13" 2021-10-19 LTS |
| Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370) |
| Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Installing External JDBC Driver</fo:marker><fo:block font-size="20.735999999999997pt">F.2. Installing External JDBC Driver</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to use a JDBC Virtualhost Node or a JDBC Virtualhost, you must make the |
| Database's JDBC 4.0 compatible drivers available on the Broker's classpath. To do this copy |
| the driver's JAR file into the <fo:inline font-family="monospace">${QPID_HOME}/lib</fo:inline> folder.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13237">Unix: |
| cp <fo:inline font-family="monospace">driver</fo:inline>.jar qpid-broker-9.2.0/lib</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13242">Windows: |
| copy <fo:inline font-family="monospace">driver</fo:inline>.jar qpid-broker-9.2.0\lib</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Queue Declaration Arguments supported by the Broker</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Queue Declaration Arguments supported by the Broker</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-Queue-Declare-Arguments"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix G. Queue Declaration Arguments supported by the Broker</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:inline font-style="italic">Qpid Broker-J</fo:inline> |
| supports a number of custom arguments which can be specified as part of <fo:inline font-style="italic">queue.declare</fo:inline> |
| commands for AMQP 0-x protocols. This section provides an overview of the supported arguments. |
| </fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Supported-Queue-Declare-Arguments"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table G.1. Queue declare arguments</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Argument Name</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Overflow-Policy"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Declaration of overflow policy. |
| See |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> |
| for more details. |
| </fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Policy-Type"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.policy_type</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines queue overflow policy.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Count"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.max_count</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of messages</fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Size"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.max_size</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of bytes</fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Overflow Policy</fo:inline> and the limits can be specified using |
| <fo:inline font-style="italic">Address</fo:inline> |
| based syntax as in the example below: |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13331"> |
| my-queue; {create: always, node: |
| {x-declare: {arguments: |
| {'qpid.max_count': 10000, |
| 'qpid.max_size': 102400, |
| 'qpid.policy_type: 'ring'}}}} |
| </fo:block> |
| </fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Overflow-Policy-Producer-Flow-Control"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternative declaration of <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy. |
| See |
| <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> |
| for more details. |
| </fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Capacity"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-capacity</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of bytes</fo:inline>. |
| </fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Flow-Resume-Capacity"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-flow-resume-capacity</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines flow resume threshold in bytes</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Producer Flow Control</fo:inline> can be specified using |
| <fo:inline font-style="italic">Address</fo:inline> based syntax as in the example below: |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13382"> |
| my-queue; {create: always, node: |
| {x-declare: {arguments: |
| {'x-qpid-capacity': 102400, |
| 'x-qpid-flow-resume-capacity': 8192000}}}} |
| </fo:block> |
| </fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Priorities"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-priorities</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies a priority queue with given number priorities</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Sort-Key"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.queue_sort_key</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies sorted queue with given message property used to sort the entries</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Last-Value-Key"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.last_value_queue_key</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies lvq queue with given message property used to conflate the entries</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Ensure-Nondestructive-Consumers"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.ensure_nondestructive_consumers</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Set to true if the queue should make all consumers attached to it behave |
| non-destructively. (Default is false).</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Maximum-Delivery-Count"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-maximum-delivery-count</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies this queue's maximum delivery count.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Single-Active-Consumer"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-single-active-consumer</fo:block> |
| </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> |
| <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If set <fo:inline font-family="monospace">true</fo:inline>, then of all consumers attached to a queue, only one will |
| be designated as <fo:inline font-style="italic">active</fo:inline>, and eligible to receive messages. If the active |
| consumer is detached, and other consumers are attached, one of these other consumers is selected |
| to become the single active consumer.</fo:block> |
| </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>BDB HA initial configuration</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>BDB HA initial configuration</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Appendix-BDB-HA-initial-configuration"><fo:block><fo:block><fo:block margin-left="0pt" font-size="24.8832pt" font-weight="bold" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Appendix H. BDB HA initial configuration</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The section <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Introduction"><fo:inline>Section 5.1, “Introduction”</fo:inline></fo:basic-link> |
| provides an introduction into Broker-J initial configuration and how broker configuration can be created from |
| initial configuration on first broker start-up. This appendix illustrates how to create a BDB HA group from an |
| initial configuration file. For creation of BDB HA group using Web Management Console please refer <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BDB HA group usually consists of two or more nodes hosting a distributed virtual host.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When BDB HA node is created the following attributes has to be provided |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e13472"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13473"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">groupName</fo:inline>; a name of BDB HA group</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13478"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">nodeName</fo:inline>; a name of BDB HA node</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13483"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">address</fo:inline>; a node address as colon-separated pair of host name and port</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13488"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">helperAddress</fo:inline>; an address of existing helper node. It is required when node joins an existing group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13493"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">helperNodeName</fo:inline>; a name of existing helper node. It is required when node joins an existing group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13498"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">permittedNodes</fo:inline>; an array containing all addresses of nodes allowed to join the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| A node priority can be optionally specified for the node to influence master election among nodes with the most current set of data. |
| An attribute <fo:inline font-style="italic">priority</fo:inline> is used to specify a priority as an integer number. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Apart from a group name and permitted nodes, the rest of node attribute values varies from node to node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to use the same initial configuration for creation of BDB HA nodes, the context variable can be used for varying attribute values.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the example of initial configuration illustrated in this apendix, the following context variables are defined. |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e13515"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13516"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.group_name}</fo:inline>; used to pass an HA group name</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13521"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.node_name}</fo:inline>; used to pass a node name</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13526"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.node_address}</fo:inline>; used to pass a node address</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13531"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.helper_address}</fo:inline>; used to pass an address of helper node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13536"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.helper_node_name}</fo:inline>; used to pass an address of helper node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13541"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.permitted_nodes}</fo:inline>; used to pass a stringified json array containing permitted nodes for the group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13546"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">${ha.priority}</fo:inline>; used to pass a node priority.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block id="Java-Broker-Appendix-BDB-HA-initial-configuration-example"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Example of BDB HA 'Initial Configuration'</fo:marker><fo:block font-size="20.735999999999997pt">H.1. Example of BDB HA 'Initial Configuration'</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> An example of 'Initial Configuration' for BDB HA:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13557"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Example H.1. BDB HA 'Initial configuration'</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13560"> |
| { |
| "name": "${broker.name}", |
| "modelVersion" : "9.0", |
| "authenticationproviders" : [ { |
| "name" : "plain", |
| "type" : "Plain", |
| "users" : [ { |
| "name" : "guest", |
| "type" : "managed", |
| "password" : "guest" |
| } ] |
| } ], |
| "brokerloggers" : [ { |
| "name" : "logfile", |
| "type" : "File", |
| "fileName" : "${qpid.work_dir}${file.separator}log${file.separator}qpid.log", |
| "brokerloginclusionrules" : [ { |
| "name" : "Root", |
| "type" : "NameAndLevel", |
| "level" : "WARN", |
| "loggerName" : "ROOT" |
| }, { |
| "name" : "Qpid", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "org.apache.qpid.*" |
| }, { |
| "name" : "Operational", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.message.*" |
| }, { |
| "name" : "Statistics", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.statistics.*" |
| } ] |
| }, { |
| "name" : "memory", |
| "type" : "Memory", |
| "brokerloginclusionrules" : [ { |
| "name" : "Root", |
| "type" : "NameAndLevel", |
| "level" : "WARN", |
| "loggerName" : "ROOT" |
| }, { |
| "name" : "Qpid", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "org.apache.qpid.*" |
| }, { |
| "name" : "Operational", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.message.*" |
| }, { |
| "name" : "Statistics", |
| "type" : "NameAndLevel", |
| "level" : "INFO", |
| "loggerName" : "qpid.statistics.*" |
| } ] |
| } ], |
| "ports" : [ { |
| "name" : "AMQP", |
| "port" : "${qpid.amqp_port}", |
| "authenticationProvider" : "plain", |
| "virtualhostaliases" : [ { |
| "name" : "nameAlias", |
| "type" : "nameAlias" |
| }, { |
| "name" : "defaultAlias", |
| "type" : "defaultAlias" |
| }, { |
| "name" : "hostnameAlias", |
| "type" : "hostnameAlias" |
| } ] |
| }, { |
| "name" : "HTTP", |
| "port" : "${qpid.http_port}", |
| "authenticationProvider" : "plain", |
| "protocols" : [ "HTTP" ] |
| }], |
| "virtualhostnodes" : [ { |
| "name" : "${ha.node_name}", |
| "type" : "BDB_HA", |
| "address" : "${ha.node_address}", |
| "groupName" : "${ha.group_name}", |
| "helperAddress" : "${ha.helper_address}", |
| "helperNodeName" : "${ha.helper_node_name}", |
| "permittedNodes" : "${ha.permitted_nodes}", |
| "priority" : "${ha.priority}", |
| "defaultVirtualHostNode" : "true", |
| "virtualHostInitialConfiguration" : "${qpid.initial_config_virtualhost_config}" |
| } ], |
| "plugins" : [ { |
| "type" : "MANAGEMENT-HTTP", |
| "name" : "httpManagement" |
| } ] |
| } |
| </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Appendix-BDB-HA-initial-configuration-creation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Creation of BDB HA group using an initial configuration.</fo:marker><fo:block font-size="20.735999999999997pt">H.2. Creation of BDB HA group using an initial configuration.</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's create a BDB HA group with name <fo:inline font-family="monospace">weather</fo:inline> |
| consisting of tree nodes <fo:inline font-family="monospace">weather1</fo:inline>, <fo:inline font-family="monospace">weather2</fo:inline>, and <fo:inline font-family="monospace">weather3</fo:inline> |
| using the initial configuration above. We start node <fo:inline font-family="monospace">weather1</fo:inline> on host/port |
| <fo:inline font-family="monospace">chaac:5000</fo:inline>, node <fo:inline font-family="monospace">weather2</fo:inline> on host/port <fo:inline font-family="monospace">indra:5000</fo:inline> |
| and node <fo:inline font-family="monospace">weather3</fo:inline> on host/port <fo:inline font-family="monospace">thor:5000</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather1</fo:inline> can be created with the following command</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13602"> |
| $ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather1 -prop ha.node_address=chaac:5000 \ |
| -prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \ |
| -prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=3 \ |
| -prop qpid.amqp_port=10000 -prop qpid.http_port=20000 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please note, the broker is started with initial configuration at file <fo:inline font-family="monospace">./initial-config.json</fo:inline>. |
| The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather1</fo:inline>. |
| The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set to <fo:inline font-family="monospace">chaac:5000</fo:inline>. |
| As it is a first node, the helper address is set to the same address as a node address (<fo:inline font-family="monospace">ha.helper_address=chaac:5000</fo:inline>) |
| and the helper node name is to itself (<fo:inline font-family="monospace">ha.helper_node_name=weather1</fo:inline>). The group name is set to <fo:inline font-family="monospace">weather</fo:inline> |
| with <fo:inline font-family="monospace">ha.group_name=weather</fo:inline>. The group nodes are listed in <fo:inline font-family="monospace">ha.permitted_nodes</fo:inline>. |
| The amqp and http ports are overridden to 10000 and 20000 accordingly. The node priority is set to <fo:inline font-family="monospace">3</fo:inline>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather2</fo:inline> can be created on host<fo:inline font-family="monospace">indra</fo:inline> with the following command:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13647"> |
| $ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather2 -prop ha.node_address=indra:5000 \ |
| -prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \ |
| -prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=2 \ |
| -prop qpid.amqp_port=10001 -prop qpid.http_port=20001 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather2</fo:inline>. |
| The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set <fo:inline font-family="monospace">indra:5000</fo:inline>. |
| The amqp and http ports are overridden to 10001 and 20001 accordingly. The node <fo:inline font-family="monospace">weather2</fo:inline> |
| priority is set to <fo:inline font-family="monospace">2</fo:inline>. The rest of the context variables have |
| the same values as for node <fo:inline font-family="monospace">weather1</fo:inline>. The latter is used as a helper node for creation of |
| <fo:inline font-family="monospace">weather2</fo:inline>. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather3</fo:inline> can be created on host<fo:inline font-family="monospace">thor</fo:inline> with the following command:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13683"> |
| $ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather3 -prop ha.node_address=thor:5000 \ |
| -prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \ |
| -prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=1 \ |
| -prop qpid.amqp_port=10002 -prop qpid.http_port=20002 |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather3</fo:inline>. |
| The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set <fo:inline font-family="monospace">thor:5000</fo:inline>. |
| The amqp and http ports are overridden to 10002 and 20002 accordingly. The node <fo:inline font-family="monospace">weather3</fo:inline> |
| priority is set to <fo:inline font-family="monospace">1</fo:inline>. The rest of the context variables have |
| the same values as for node <fo:inline font-family="monospace">weather1</fo:inline> which is used as a helper node for creation of |
| <fo:inline font-family="monospace">weather3</fo:inline>. |
| </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Docker Images</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block>Docker Images</fo:block></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="blank-body"><fo:block text-align="center"/></fo:static-content><fo:static-content flow-name="xsl-region-inner-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-inner-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-first"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-odd"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-even"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-outer-blank"><fo:block/></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="4pc" end-indent="0pt"><fo:block id="Java-Broker-Docker"><fo:block font-family="sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pt"><fo:block font-size="24.8832pt" font-weight="bold"><fo:block keep-with-next.within-column="always" space-before.optimum="10pt" space-before.minimum="10pt * 0.8" space-before.maximum="10pt * 1.2" hyphenate="false" text-align="start" start-indent="0pt" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2">Chapter 12. Docker Images</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Docker-Building-Image"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Building Container Image</fo:marker><fo:block font-size="20.735999999999997pt">12.1. Building Container Image</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To use an official Apache release in your image run the following command from the qpid-docker directory where |
| <QPID_RELEASE_VERSION> is the release version you wish to use (e.g. 9.1.0): |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13722"> |
| cd qpid-docker |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13727"> |
| docker-build.sh --release <QPID_RELEASE_VERSION> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This will download the Qpid Broker-J release and copy all the files necessary to build the pre-configured |
| Docker image and provide you with additional instructions. Follow these instructions to finish building |
| the image you want based on the provided Docker file or even one of your own. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| If you would rather prefer to build the docker image from local Broker-J distribution, build the parent |
| project using the command |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13736"> |
| mvn clean install -DskipTests=true |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Navigate to the module 'qpid-docker': |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13743"> |
| cd qpid-docker |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Execute the command: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13750"> |
| docker-build.sh --local-dist-path <PATH_TO_LOCAL_QPID_DISTRIBUTION> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| This will copy all the files necessary to build the pre-configured Docker image and provide you with additional |
| instructions. Follow these instructions to finish building the image you want based on one of the provided |
| Docker file or even one of your own. |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Running-The-Container"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Running the Container</fo:marker><fo:block font-size="20.735999999999997pt">12.2. Running the Container</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Docker-Container-Start"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Container Start</fo:marker><fo:block font-size="17.28pt">12.2.1. Container Start</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Container can be started using following command: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13765"> |
| docker run -d -p 5672:5672 -p 8080:8080 --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| or |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13772"> |
| podman run -d -p 5672:5672 -p 8080:8080 -v qpid_volume:/qpid-broker-j/work:Z --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| There are two ports exposed: 5672 for AMQP connections and 8080 for HTTP connections. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| There are following environment variables available when running the container: |
| </fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13779"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="always">Table 12.1. Environment Variables</fo:block><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.5pt" border-end-width="0.5pt" border-top-width="0.5pt" border-bottom-width="0.5pt" border-start-color="black" border-end-color="black" border-top-color="black" border-bottom-color="black" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-header start-indent="0pt" end-indent="0pt"><fo:table-row keep-with-next.within-column="always"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block font-weight="bold">Environment Variable</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block font-weight="bold">Description</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>JAVA_GC</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>JVM Garbage Collector parameters, default value "-XX:+UseG1GC"</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>JAVA_MEM</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>JVM memory parameters, default value "-Xmx300m -XX:MaxDirectMemorySize=200m"</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>JAVA_OPTS</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>Further JVM parameters, default value is an empty string</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="Java-Broker-Docker-Container-Volume"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Container Volume</fo:marker><fo:block font-size="17.28pt">12.2.2. Container Volume</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The image will use the directory /qpid-broker-j/work to hold the configuration and the data of the |
| running broker. To persist the broker configuration and the data outside the container, start container |
| with the volume mapping: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13814"> |
| docker run -d -p 5672:5672 -p 8080:8080 -v <BROKER_DIRECTOR_ON_HOST>:/qpid-broker-j/work --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| or |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13821"> |
| podman run -d -p 5672:5672 -p 8080:8080 -v <BROKER_DIRECTOR_ON_HOST>:/qpid-broker-j/work:Z --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Container-Stop"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Stopping the Container</fo:marker><fo:block font-size="17.28pt">12.2.3. Stopping the Container</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Running container can be stopped using following command: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13831"> |
| docker stop <CONTAINER_NAME> |
| </fo:block> |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Users"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker Users</fo:marker><fo:block font-size="20.735999999999997pt">12.3. Broker Users</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Default configuration provides a preconfigured broker user, having read and write access to all broker objects: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e13841"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13842"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>admin (default password 'admin')</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Username of the 'admin' user can be overridden be providing the variable QPID_ADMIN_USER on start, and the default |
| password of the 'admin' user can be overridden be providing the variable QPID_ADMIN_PASSWORD on start: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13850"> |
| docker run -d -p 5672:5672 -p 8080:8080 -v qpid_volume:/qpid-broker-j/work -e QPID_ADMIN_USER=myuser -e QPID_ADMIN_PASSWORD=mypassword --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Further broker users as well as other broker objects (queues, exchanges, keystores, truststore, ports etc.) |
| can be created via HTTP management interface. Description of the broker REST API can be found in broker book |
| (<fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>chapter 6.3</fo:inline></fo:basic-link>). |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Broker Customization</fo:marker><fo:block font-size="20.735999999999997pt">12.4. Broker Customization</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To customize broker before building the container image, its configuration files may be edited to start |
| broker with queues, exchanges, users or other objects. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The file config.json contains definitions of the broker objects and references a file containing definitions |
| of virtualhost objects (exchanges and queues). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| It may be helpful first to create broker objects needed via broker web GUI or via REST API, and then |
| investigate the configuration files and copy the appropriate definitions to the configuration files used |
| for container image creation. |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| An example of the default initial configuration JSON file is provided in broker book |
| (<fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:inline>chapter 5.7</fo:inline></fo:basic-link>). |
| </fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Exchanges"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Exchanges</fo:marker><fo:block font-size="17.28pt">12.4.1. Exchanges</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To create exchanges a JSON element "exchanges" should be created containing an array of single |
| exchange definitions: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13879"> |
| "exchanges" : [ { |
| "name" : "amq.direct", |
| "type" : "direct" |
| }, { |
| "name" : "amq.fanout", |
| "type" : "fanout" |
| }, { |
| "name" : "amq.match", |
| "type" : "headers" |
| }, { |
| "name" : "amq.topic", |
| "type" : "topic" |
| }, { |
| "name" : "request.QUEUE1", |
| "type" : "topic", |
| "durable" : true, |
| "durableBindings" : [ { |
| "arguments" : { }, |
| "destination" : "QUEUE1", |
| "bindingKey" : "#" |
| } ], |
| "unroutableMessageBehaviour" : "REJECT" |
| } ] |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Information about exchanges, their types and properties can be found in broker book |
| (<fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges"><fo:inline>chapter 4.6</fo:inline></fo:basic-link>). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Please note that each virtualhost pre-declares several exchanges, described in the broker book |
| (<fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Predeclared"><fo:inline>chapter 4.6.1</fo:inline></fo:basic-link>). |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Queues</fo:marker><fo:block font-size="17.28pt">12.4.2. Queues</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| To create queue a JSON element "queues" should be created containing an array of single queue definitions: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13899"> |
| "queues" : [ { |
| "name" : "QUEUE1", |
| "type" : "standard", |
| "durable" : true, |
| "maximumQueueDepthBytes" : 6144000, |
| "maximumQueueDepthMessages" : 6000, |
| "messageDurability" : "ALWAYS", |
| "overflowPolicy" : "REJECT" |
| }, { |
| "name" : "QUEUE2", |
| "type" : "standard", |
| "durable" : true, |
| "maximumQueueDepthBytes" : 6144000, |
| "maximumQueueDepthMessages" : 6000, |
| "messageDurability" : "ALWAYS", |
| "overflowPolicy" : "REJECT" |
| } ] |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Information about queues, their types and properties can be found in broker book |
| (<fo:basic-link internal-destination="Java-Broker-Concepts-Queues"><fo:inline>chapter 4.7</fo:inline></fo:basic-link>). |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Users"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Users</fo:marker><fo:block font-size="17.28pt">12.4.3. Users</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Users can be defined in an authentication provider. Authentication providers are defined on broker |
| level (file config.json). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Information about authentication providers, their types and properties can be found in broker book |
| (<fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>chapter 8.1</fo:inline></fo:basic-link>). |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Examples for most commonly used authentication providers can be found below. |
| </fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Users-Anonymous"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">12.4.3.1. Anonymous Authentication Provider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13924"> |
| "authenticationproviders" : [ { |
| "name" : "anon", |
| "type" : "Anonymous" |
| } ] |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For additional details see broker book |
| (<fo:basic-link internal-destination="Java-Broker-Security-Anonymous-Provider"><fo:inline>chapter 8.1.5</fo:inline></fo:basic-link>). |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Users-Plain"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">12.4.3.2. Plain Authentication Provider</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13937"> |
| "authenticationproviders" : [{ |
| "name" : "plain", |
| "type" : "Plain", |
| "secureOnlyMechanisms" : [], |
| "users" : [ { |
| "name" : "admin", |
| "type" : "managed", |
| "password" : "<PASSWORD>" |
| } ] |
| } ] |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For additional details see broker book |
| (<fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>chapter 8.1.7</fo:inline></fo:basic-link>). |
| </fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Users-ACL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999pt">12.4.3.3. ACL Rules</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The ACL rules for users are defined in file broker.acl following the syntax: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13952"> |
| ACL {permission} {<group-name>|<user-name>|ALL} {action|ALL} [object|ALL] [property=<property-values>] |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The predefined broker.acl file contains permissions for the 'admin' user: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13959"> |
| # account 'admin' - enabled all actions |
| ACL ALLOW-LOG admin ALL ALL |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| For additional details see broker book |
| (<fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-ACLRules"><fo:inline>chapter 8.3.2</fo:inline></fo:basic-link>). |
| </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Docker-Broker-Customization-Override"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name="section.head.marker">Overriding Broker Configuration</fo:marker><fo:block font-size="17.28pt">12.4.4. Overriding Broker Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| Customized configuration for the Broker-J instance can be used by replacing the files residing in the work |
| folder with the custom ones, e.g. config.json or default.json. Put the replacement files inside a folder |
| and map it as a volume to: |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13974"> |
| docker run -d -p 5672:5672 -p 8080:8080 -v <DIRECTORY_ON_HOST>:/qpid-broker-j/work-override:Z --name qpid <IMAGE_NAME> |
| </fo:block> |
| </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> |
| The contents of work-override folder will be copied over to work folder first time after the instance creation so that |
| the broker will start with user-supplied configuration. |
| </fo:block></fo:block></fo:block></fo:flow></fo:page-sequence></fo:root> |