Modified: websites/production/camel/content/quickfix.html
==============================================================================
--- websites/production/camel/content/quickfix.html (original)
+++ websites/production/camel/content/quickfix.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
<![endif]-->
- <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css'
rel='stylesheet' type='text/css' />
- <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css'
rel='stylesheet' type='text/css' />
- <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js'
type='text/javascript'></script>
- <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
- <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
-
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<title>
Apache Camel: Quickfix
@@ -86,179 +75,62 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2
id="Quickfix-QuickFIX/JComponent">QuickFIX/J Component</h2><p>The
<strong>quickfix</strong> component adapts the <a shape="rect"
class="external-link" href="http://www.quickfixj.org/"
rel="nofollow">QuickFIX/J</a> FIX engine for using in Camel . This component
uses the standard <a shape="rect" class="external-link"
href="http://www.fixprotocol.org/" rel="nofollow">Financial Interchange (FIX)
protocol</a> for message transport.</p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Previous
Versions</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The <strong>quickfix</strong>
component was rewritten for Camel 2.5. For information about using the
<strong>quickfix</strong> component prior to 2.5 see the documentation section
below.</p></div></div><p>Maven users will need to add the following depen
dency to their <code>pom.xml</code> for this component:</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<dependency>
+<div class="wiki-content maincontent"><h2
id="Quickfix-QuickFIX/JComponent">QuickFIX/J Component</h2><p>The
<strong>quickfix</strong> component adapts the <a shape="rect"
class="external-link" href="http://www.quickfixj.org/"
rel="nofollow">QuickFIX/J</a> FIX engine for using in Camel . This component
uses the standard <a shape="rect" class="external-link"
href="http://www.fixprotocol.org/" rel="nofollow">Financial Interchange (FIX)
protocol</a> for message transport.</p><parameter ac:name="title">Previous
Versions</parameter><rich-text-body><p>The <strong>quickfix</strong> component
was rewritten for Camel 2.5. For information about using the
<strong>quickfix</strong> component prior to 2.5 see the documentation section
below.</p></rich-text-body><p>Maven users will need to add the following
dependency to their <code>pom.xml</code> for this component:</p><parameter
ac:name="">xml</parameter><plain-text-body><dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-quickfix</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
-]]></script>
-</div></div><h3 id="Quickfix-URIformat">URI format</h3><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[quickfix:configFile[?sessionID=sessionID&lazyCreateEngine=true|false]
-]]></script>
-</div></div><p>The <strong>configFile</strong> is the name of the QuickFIX/J
configuration to use for the FIX engine (located as a resource found in your
classpath). The optional <strong>sessionID</strong> identifies a specific FIX
session. The format of the sessionID is:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[(BeginString):(SenderCompID)[/(SenderSubID)[/(SenderLocationID)]]->(TargetCompID)[/(TargetSubID)[/(TargetLocationID)]]
-]]></script>
-</div></div><p>The optional <strong>lazyCreateEngine</strong> (Camel 2.12.3+)
parameter allows to create QuickFIX/J engine on demand. Value
<strong>true</strong> means the engine is started when first message is send or
there's consumer configured in route definition.
When <strong>false</strong> value is used, the engine is started at the
endpoint creation. When this parameter is missing, the value of component's
property <strong>lazyCreateEngines</strong> is being used.</p><p>Example
URIs:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[quickfix:config.cfg
+</plain-text-body><h3 id="Quickfix-URIformat">URI
format</h3><plain-text-body>quickfix:configFile[?sessionID=sessionID&lazyCreateEngine=true|false]
+</plain-text-body><p>The <strong>configFile</strong> is the name of the
QuickFIX/J configuration to use for the FIX engine (located as a resource found
in your classpath). The optional <strong>sessionID</strong> identifies a
specific FIX session. The format of the sessionID
is:</p><plain-text-body>(BeginString):(SenderCompID)[/(SenderSubID)[/(SenderLocationID)]]->(TargetCompID)[/(TargetSubID)[/(TargetLocationID)]]
+</plain-text-body><p>The optional <strong>lazyCreateEngine</strong> (Camel
2.12.3+) parameter allows to create QuickFIX/J engine on demand. Value
<strong>true</strong> means the engine is started when first message is send or
there's consumer configured in route definition.
When <strong>false</strong> value is used, the engine is started at the
endpoint creation. When this parameter is missing, the value of component's
property <strong>lazyCreateEngines</strong> is being used.</p><p>Example
URIs:</p><plain-text-body>quickfix:config.cfg
quickfix:config.cfg?sessionID=FIX.4.2:MyTradingCompany->SomeExchange
-quickfix:config.cfg?sessionID=FIX.4.2:MyTradingCompany->SomeExchange&lazyCreateEngine=true]]></script>
-</div></div><h2 id="Quickfix-Endpoints">Endpoints</h2><p>FIX sessions are
endpoints for the <strong>quickfix</strong> component. An endpoint URI may
specify a single session or all sessions managed by a specific QuickFIX/J
engine. Typical applications will use only one FIX engine but advanced users
may create multiple FIX engines by referencing different configuration files in
<strong>quickfix</strong> component endpoint URIs.</p><p>When a consumer does
not include a session ID in the endpoint URI, it will receive exchanges for all
sessions managed by the FIX engine associated with the configuration file
specified in the URI. If a producer does not specify a session in the endpoint
URI then it must include the session-related fields in the FIX message being
sent. If a session is specified in the URI then the component will
automatically inject the session-related fields into the FIX message.</p><h3
id="Quickfix-ExchangeFormat">Exchange Format</h3><p>The exchange headers
include info
rmation to help with exchange filtering, routing and other processing. The
following headers are available:</p><div class="confluenceTableSmall">
+quickfix:config.cfg?sessionID=FIX.4.2:MyTradingCompany->SomeExchange&lazyCreateEngine=true</plain-text-body><h2
id="Quickfix-Endpoints">Endpoints</h2><p>FIX sessions are endpoints for the
<strong>quickfix</strong> component. An endpoint URI may specify a single
session or all sessions managed by a specific QuickFIX/J engine. Typical
applications will use only one FIX engine but advanced users may create
multiple FIX engines by referencing different configuration files in
<strong>quickfix</strong> component endpoint URIs.</p><p>When a consumer does
not include a session ID in the endpoint URI, it will receive exchanges for all
sessions managed by the FIX engine associated with the configuration file
specified in the URI. If a producer does not specify a session in the endpoint
URI then it must include the session-related fields in the FIX message being
sent. If a session is specified in the URI then the component will
automatically inject the session-related fields into the FI
X message.</p><h3 id="Quickfix-ExchangeFormat">Exchange Format</h3><p>The
exchange headers include information to help with exchange filtering, routing
and other processing. The following headers are available:</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Header Name </p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p> Description
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
EventCategory </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> One
of <code>AppMessageReceived</code>, <code>AppMessageSent</code>,
<code>AdminMessageReceived</code>, <code>AdminMessageSent</code>,
<code>SessionCreated</code>, <code>SessionLogon</code>,
<code>SessionLogoff</code>. See the <code>QuickfixjEventCategory</code> enum.
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
SessionID </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The FIX
message SessionID </p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p> MessageType </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> The FIX MsgType tag value </p></td></tr><tr><td
colspan="1" ro
wspan="1" class="confluenceTd"><p> DataDictionary </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> Specifies a data dictionary to used for
parsing an incoming message. Can be an instance of a data dictionary or a
resource path for a QuickFIX/J data dictionary file
</p></td></tr></tbody></table></div>
-</div>
-
-
-<p>The DataDictionary header is useful if string messages are being received
and need to be parsed in a route. QuickFIX/J requires a data dictionary to
parse certain types of messages (with repeating groups, for example). By
injecting a DataDictionary header in the route after receiving a message
string, the FIX engine can properly parse the data.</p><h3
id="Quickfix-QuickFIX/JConfigurationExtensions">QuickFIX/J Configuration
Extensions</h3><p>When using QuickFIX/J directly, one typically writes code to
create instances of logging adapters, message stores and communication
connectors. The <strong>quickfix</strong> component will automatically create
instances of these classes based on information in the configuration file. It
also provides defaults for many of the common required settings and adds
additional capabilities (like the ability to activate JMX support).</p><p>The
following sections describe how the <strong>quickfix</strong> component
processes the QuickFIX/J configuration
. For comprehensive information about QuickFIX/J configuration, see the <a
shape="rect" class="external-link"
href="http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html"
rel="nofollow">QFJ user manual</a>.</p><h4
id="Quickfix-CommunicationConnectors">Communication Connectors</h4><p>When the
component detects an initiator or acceptor session setting in the QuickFIX/J
configuration file it will automatically create the corresponding initiator
and/or acceptor connector. These settings can be in the default or in a
specific session section of the configuration file.</p><div
class="confluenceTableSmall">
+</rich-text-body><p>The DataDictionary header is useful if string messages are
being received and need to be parsed in a route. QuickFIX/J requires a data
dictionary to parse certain types of messages (with repeating groups, for
example). By injecting a DataDictionary header in the route after receiving a
message string, the FIX engine can properly parse the data.</p><h3
id="Quickfix-QuickFIX/JConfigurationExtensions">QuickFIX/J Configuration
Extensions</h3><p>When using QuickFIX/J directly, one typically writes code to
create instances of logging adapters, message stores and communication
connectors. The <strong>quickfix</strong> component will automatically create
instances of these classes based on information in the configuration file. It
also provides defaults for many of the common required settings and adds
additional capabilities (like the ability to activate JMX support).</p><p>The
following sections describe how the <strong>quickfix</strong> component
processes the QuickFI
X/J configuration. For comprehensive information about QuickFIX/J
configuration, see the <a shape="rect" class="external-link"
href="http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html"
rel="nofollow">QFJ user manual</a>.</p><h4
id="Quickfix-CommunicationConnectors">Communication Connectors</h4><p>When the
component detects an initiator or acceptor session setting in the QuickFIX/J
configuration file it will automatically create the corresponding initiator
and/or acceptor connector. These settings can be in the default or in a
specific session section of the configuration file.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Session Setting </p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p> Component Action
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ConnectionType=initiator</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Create an initiator connector </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ConnectionType=acceptor</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Create an acceptor connector
</p></td></tr></tbody></table></div>
-</div>
-
-
-<p>The threading model for the QuickFIX/J session connectors can also be
specified. These settings affect all sessions in the configuration file and
must be placed in the settings default section.</p><div
class="confluenceTableSmall">
+</rich-text-body><p>The threading model for the QuickFIX/J session connectors
can also be specified. These settings affect all sessions in the configuration
file and must be placed in the settings default section.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Default/Global Setting
</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Component Action
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ThreadModel=ThreadPerConnector</code> </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> Use <code>SocketInitiator</code> or
<code>SocketAcceptor</code> (default) </p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> <code>ThreadModel=ThreadPerSession</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Use
<code>ThreadedSocketInitiator</code> or <code>ThreadedSocketAcceptor</code>
</p></td></tr></tbody></table></div>
-</div>
-
-
-<h4 id="Quickfix-Logging">Logging</h4><p>The QuickFIX/J logger implementation
can be specified by including the following settings in the default section of
the configuration file. The <code>ScreenLog</code> is the default if none of
the following settings are present in the configuration. It's an error to
include settings that imply more than one log implementation. The log factory
implementation can also be set directly on the Quickfix component. This will
override any related values in the QuickFIX/J settings file.</p><div
class="confluenceTableSmall">
+</rich-text-body><h4 id="Quickfix-Logging">Logging</h4><p>The QuickFIX/J
logger implementation can be specified by including the following settings in
the default section of the configuration file. The <code>ScreenLog</code> is
the default if none of the following settings are present in the configuration.
It's an error to include settings that imply more than one log implementation.
The log factory implementation can also be set directly on the Quickfix
component. This will override any related values in the QuickFIX/J settings
file.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Default/Global Setting
</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Component Action
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ScreenLogShowEvents</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Use a <code>ScreenLog</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ScreenLogShowIncoming</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Use a <code>ScreenLog</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>
<code>ScreenLogShowOutgoing</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Use a <code>ScreenLog</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>SLF4J*</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel
2.6+</strong>. Use a
<code>SLF4JLog</code>. Any of the SLF4J settings will cause this log to be
used. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>FileLogPath</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Use a <code>FileLog</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>JdbcDriver</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Use a
<code>JdbcLog</code> </p></td></tr></tbody></table></div>
-</div>
-
-
-<h4 id="Quickfix-MessageStore">Message Store</h4><p>The QuickFIX/J message
store implementation can be specified by including the following settings in
the default section of the configuration file. The <code>MemoryStore</code> is
the default if none of the following settings are present in the configuration.
It's an error to include settings that imply more than one message store
implementation. The message store factory implementation can also be set
directly on the Quickfix component. This will override any related values in
the QuickFIX/J settings file.</p><div class="confluenceTableSmall">
+</rich-text-body><h4 id="Quickfix-MessageStore">Message Store</h4><p>The
QuickFIX/J message store implementation can be specified by including the
following settings in the default section of the configuration file. The
<code>MemoryStore</code> is the default if none of the following settings are
present in the configuration. It's an error to include settings that imply more
than one message store implementation. The message store factory implementation
can also be set directly on the Quickfix component. This will override any
related values in the QuickFIX/J settings file.</p><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Default/Global Setting
</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Component Action
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>JdbcDriver</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> Use a <code>JdbcStore</code> </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p> <code>FileStorePath</code>
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Use a
<code>FileStore</code> </p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p> <code>SleepycatDatabaseDir</code> </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> Use a
<code>SleepcatStore</code> </p></td></tr></tbody></table></div>
-</div>
-
-
-<h4 id="Quickfix-MessageFactory">Message Factory</h4><p>A message factory is
used to construct domain objects from raw FIX messages. The default message
factory is <code>DefaultMessageFactory</code>. However, advanced applications
may require a custom message factory. This can be set on the QuickFIX/J
component.</p><h4 id="Quickfix-JMX">JMX</h4><div class="confluenceTableSmall">
+</rich-text-body><h4 id="Quickfix-MessageFactory">Message Factory</h4><p>A
message factory is used to construct domain objects from raw FIX messages. The
default message factory is <code>DefaultMessageFactory</code>. However,
advanced applications may require a custom message factory. This can be set on
the QuickFIX/J component.</p><h4 id="Quickfix-JMX">JMX</h4><parameter
ac:name="class">confluenceTableSmall</parameter><rich-text-body>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Default/Global Setting
</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Component Action
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
<code>UseJmx</code> </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> if <code>Y</code>, then enable QuickFIX/J JMX
</p></td></tr></tbody></table></div>
-</div>
-
-
-<h4 id="Quickfix-OtherDefaults">Other Defaults</h4><p>The component provides
some default settings for what are normally required settings in QuickFIX/J
configuration files. <code>SessionStartTime</code> and
<code>SessionEndTime</code> default to "00:00:00", meaning the session will not
be automatically started and stopped. The <code>HeartBtInt</code> (heartbeat
interval) defaults to 30 seconds.</p><h4
id="Quickfix-MinimalInitiatorConfigurationExample">Minimal Initiator
Configuration Example</h4><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[[SESSION]
+</rich-text-body><h4 id="Quickfix-OtherDefaults">Other Defaults</h4><p>The
component provides some default settings for what are normally required
settings in QuickFIX/J configuration files. <code>SessionStartTime</code> and
<code>SessionEndTime</code> default to "00:00:00", meaning the session will not
be automatically started and stopped. The <code>HeartBtInt</code> (heartbeat
interval) defaults to 30 seconds.</p><h4
id="Quickfix-MinimalInitiatorConfigurationExample">Minimal Initiator
Configuration Example</h4><plain-text-body>[SESSION]
ConnectionType=initiator
BeginString=FIX.4.4
SenderCompID=YOUR_SENDER
TargetCompID=YOUR_TARGET
-]]></script>
-</div></div><h3 id="Quickfix-UsingtheInOutMessageExchangePattern">Using the
InOut Message Exchange Pattern</h3><p><strong>Camel
2.8+</strong></p><p>Although the FIX protocol is event-driven and asynchronous,
there are specific pairs of messages<br clear="none"> that represent a
request-reply message exchange. To use an InOut exchange pattern, there
should<br clear="none"> be a single request message and single reply message to
the request. Examples include an <br clear="none"> OrderStatusRequest message
and UserRequest.</p><h4
id="Quickfix-ImplementingInOutExchangesforConsumers">Implementing InOut
Exchanges for Consumers</h4><p>Add "exchangePattern=InOut" to the QuickFIX/J
enpoint URI. The <code>MessageOrderStatusService</code> in<br clear="none"> the
example below is a bean with a synchronous service method. The method returns
the response<br clear="none"> to the request (an ExecutionReport in this case)
which is then sent back to the requestor session.</p><div class="code panel pd
l" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER&exchangePattern=InOut")
+</plain-text-body><h3 id="Quickfix-UsingtheInOutMessageExchangePattern">Using
the InOut Message Exchange Pattern</h3><p><strong>Camel
2.8+</strong></p><p>Although the FIX protocol is event-driven and asynchronous,
there are specific pairs of messages<br clear="none"> that represent a
request-reply message exchange. To use an InOut exchange pattern, there
should<br clear="none"> be a single request message and single reply message to
the request. Examples include an <br clear="none"> OrderStatusRequest message
and UserRequest.</p><h4
id="Quickfix-ImplementingInOutExchangesforConsumers">Implementing InOut
Exchanges for Consumers</h4><p>Add "exchangePattern=InOut" to the QuickFIX/J
enpoint URI. The <code>MessageOrderStatusService</code> in<br clear="none"> the
example below is a bean with a synchronous service method. The method returns
the response<br clear="none"> to the request (an ExecutionReport in this case)
which is then sent back to the requestor session.</p><plain-text-body>
from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER&exchangePattern=InOut")
.filter(header(QuickfixjEndpoint.MESSAGE_TYPE_KEY).isEqualTo(MsgType.ORDER_STATUS_REQUEST))
.bean(new MarketOrderStatusService());
-]]></script>
-</div></div><h4
id="Quickfix-ImplementingInOutExchangesforProducers">Implementing InOut
Exchanges for Producers</h4><p>For producers, sending a message will block
until a reply is received or a timeout occurs. There<br clear="none"> is no
standard way to correlate reply messages in FIX. Therefore, a correlation
criteria must be<br clear="none"> defined for each type of InOut exchange. The
correlation criteria and timeout can be specified<br clear="none"> using
<code>Exchange</code> properties.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Key String</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Key Constant</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Correlation Criteria</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>"Co
rrelationCriteria"</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>QuickfixjProducer.CORRELATION_CRITERIA_KEY</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>None</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Correlation Timeout in
Milliseconds</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>"CorrelationTimeout"</p></td><td colspan="1"
rowspan="1"
class="confluenceTd"><p>QuickfixjProducer.CORRELATION_TIMEOUT_KEY</p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p>1000</p></td></tr></tbody></table></div><p>The
correlation criteria is defined with a <code>MessagePredicate</code> object.
The following example will treat<br clear="none"> a FIX ExecutionReport from
the specified session where the transaction type is STATUS and the Order ID<br
clear="none"> matches our request. The session ID should be for the
<em>requestor</em>, the sender and target CompID fields<br clear="none"> will
be reversed when looking for the rep
ly.</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[exchange.setProperty(QuickfixjProducer.CORRELATION_CRITERIA_KEY,
+</plain-text-body><h4
id="Quickfix-ImplementingInOutExchangesforProducers">Implementing InOut
Exchanges for Producers</h4><p>For producers, sending a message will block
until a reply is received or a timeout occurs. There<br clear="none"> is no
standard way to correlate reply messages in FIX. Therefore, a correlation
criteria must be<br clear="none"> defined for each type of InOut exchange. The
correlation criteria and timeout can be specified<br clear="none"> using
<code>Exchange</code> properties.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Key String</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Key Constant</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Correlation Criteria</p></td><td colspan="1"
rowspan="1" class="confluenceTd">
<p>"CorrelationCriteria"</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>QuickfixjProducer.CORRELATION_CRITERIA_KEY</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>None</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Correlation Timeout in
Milliseconds</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>"CorrelationTimeout"</p></td><td colspan="1"
rowspan="1"
class="confluenceTd"><p>QuickfixjProducer.CORRELATION_TIMEOUT_KEY</p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p>1000</p></td></tr></tbody></table></div><p>The
correlation criteria is defined with a <code>MessagePredicate</code> object.
The following example will treat<br clear="none"> a FIX ExecutionReport from
the specified session where the transaction type is STATUS and the Order ID<br
clear="none"> matches our request. The session ID should be for the
<em>requestor</em>, the sender and target CompID fields<br clear="none"> will
be reversed when looking for t
he
reply.</p><plain-text-body>exchange.setProperty(QuickfixjProducer.CORRELATION_CRITERIA_KEY,
new MessagePredicate(new SessionID(sessionID), MsgType.EXECUTION_REPORT)
.withField(ExecTransType.FIELD, Integer.toString(ExecTransType.STATUS))
.withField(OrderID.FIELD, request.getString(OrderID.FIELD)));
-]]></script>
-</div></div><h4 id="Quickfix-Example">Example</h4><p>The source code contains
an example called <code>RequestReplyExample</code> that demonstrates the InOut
exchanges<br clear="none"> for a consumer and producer. This example creates a
simple HTTP server endpoint that accepts order<br clear="none"> status
requests. The HTTP request is converted to a FIX OrderStatusRequestMessage, is
augmented with a<br clear="none"> correlation criteria, and is then routed to a
quickfix endpoint. The response is then converted to a<br clear="none">
JSON-formatted string and sent back to the HTTP server endpoint to be provided
as the web response.</p><p>The Spring configuration have changed from Camel 2.9
onwards. See further below for example.</p><h3
id="Quickfix-SpringConfiguration">Spring Configuration</h3><p><strong>Camel 2.6
- 2.8.x</strong></p><p>The QuickFIX/J component includes a Spring
<code>FactoryBean</code> for configuring the session settings within a Spring
context. A type converter for
QuickFIX/J session ID strings is also included. The following example shows a
simple configuration of an acceptor and initiator session with default settings
for both sessions.</p><div class="error"><span class="error">Error formatting
macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span>
</div><p><strong>Camel 2.9 onwards</strong></p><p>The QuickFIX/J component
includes a <code>QuickfixjConfiguration</code> class for configuring the
session settings. A type converter for QuickFIX/J session ID strings is also
included. The following example shows a simple configuration of an acceptor and
initiator session with default settings for both sessions.</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
-<!-- tag::e1[] -->
-<!-- camel route -->
-<camelContext id="quickfixjContext"
xmlns="http://camel.apache.org/schema/spring">
- <route>
- <from uri="quickfix:example"/>
- <filter>
- <simple>${in.header.EventCategory} ==
'AppMessageReceived'</simple>
- <to uri="log:test"/>
- </filter>
- </route>
- <route>
- <from uri="vm:test"/>
- <to uri="lazyQuickfix:example"/>
- </route>
-</camelContext>
-
-<!-- quickfix component -->
-<bean id="quickfix"
class="org.apache.camel.component.quickfixj.QuickfixjComponent">
- <property name="configurations">
- <util:map>
- <entry key="example"
value-ref="quickfixjConfiguration"/>
- </util:map>
- </property>
- <property name="messageFactory">
- <bean
class="org.apache.camel.component.quickfixj.QuickfixjSpringTest.CustomMessageFactory"/>
- </property>
-</bean>
-
-<!-- lazy quickfix component -->
-<bean id="lazyQuickfix"
class="org.apache.camel.component.quickfixj.QuickfixjComponent">
- <property name="lazyCreateEngines" value="true"
/>
- <property name="configurations">
- <util:map>
- <entry key="example"
value-ref="lazyQuickfixjConfiguration"/>
- </util:map>
- </property>
- <property name="messageFactory">
- <bean
class="org.apache.camel.component.quickfixj.QuickfixjSpringTest.CustomMessageFactory"/>
- </property>
-</bean>
-
-<!-- quickfix settings -->
-<bean id="quickfixjConfiguration"
class="org.apache.camel.component.quickfixj.QuickfixjConfiguration">
- <property name="defaultSettings">
- <util:map>
- <entry key="SocketConnectProtocol"
value="VM_PIPE"/>
- <entry key="SocketAcceptProtocol"
value="VM_PIPE"/>
- <entry key="UseDataDictionary"
value="N"/>
- </util:map>
- </property>
- <property name="sessionSettings">
- <util:map>
- <entry key="FIX.4.2:INITIATOR->ACCEPTOR">
- <util:map>
- <entry key="ConnectionType"
value="initiator"/>
- <entry key="SocketConnectHost"
value="localhost"/>
- <entry key="SocketConnectPort"
value="5000"/>
- </util:map>
- </entry>
- <entry key="FIX.4.2:ACCEPTOR->INITIATOR">
- <util:map>
- <entry key="ConnectionType"
value="acceptor"/>
- <entry key="SocketAcceptPort"
value="5000"/>
- </util:map>
- </entry>
- </util:map>
- </property>
-</bean>
-<!-- end::e1[] -->
-]]></script>
-</div></div><h3 id="Quickfix-Exceptionhandling">Exception
handling</h3><p>QuickFIX/J behavior can be modified if certain exceptions are
thrown during processing of a message. If a <code>RejectLogon</code> exception
is thrown while processing an incoming logon administrative message, then the
logon will be rejected.</p><p>Normally, QuickFIX/J handles the logon process
automatically. However, sometimes an outgoing logon message must be modified to
include credentials required by a FIX counterparty. If the FIX logon message
body is modified when sending a logon message
(EventCategory=<code>AdminMessageSent</code> the modified message will be sent
to the counterparty. It is important that the outgoing logon message is being
processed <em>synchronously</em>. If it is processed asynchronously (on another
thread), the FIX engine will immediately send the unmodified outgoing message
when it's callback method returns.</p><h3
id="Quickfix-FIXSequenceNumberManagement">FIX Sequence Number Manag
ement</h3><p>If an application exception is thrown during <em>synchronous</em>
exchange processing, this will cause QuickFIX/J to not increment incoming FIX
message sequence numbers and will cause a resend of the counterparty message.
This FIX protocol behavior is primarily intended to handle <em>transport</em>
errors rather than application errors. There are risks associated with using
this mechanism to handle application errors. The primary risk is that the
message will repeatedly cause application errors each time it's re-received. A
better solution is to persist the incoming message (database, JMS queue)
immediately before processing it. This also allows the application to process
messages asynchronously without losing messages when errors
occur.</p><p>Although it's possible to send messages to a FIX session before
it's logged on (the messages will be sent at logon time), it is usually a
better practice to wait until the session is logged on. This eliminates the
required sequenc
e number resynchronization steps at logon. Waiting for session logon can be
done by setting up a route that processes the <code>SessionLogon</code> event
category and signals the application to start sending messages.</p><p>See the
FIX protocol specifications and the QuickFIX/J documentation for more details
about FIX sequence number management.</p><h3 id="Quickfix-RouteExamples">Route
Examples</h3><p>Several examples are included in the QuickFIX/J component
source code (test subdirectories). One of these examples implements a trival
trade excecution simulation. The example defines an application component that
uses the URI scheme "trade-executor".</p><p>The following route receives
messages for the trade executor session and passes application messages to the
trade executor component.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER").
+</plain-text-body><h4 id="Quickfix-Example">Example</h4><p>The source code
contains an example called <code>RequestReplyExample</code> that demonstrates
the InOut exchanges<br clear="none"> for a consumer and producer. This example
creates a simple HTTP server endpoint that accepts order<br clear="none">
status requests. The HTTP request is converted to a FIX
OrderStatusRequestMessage, is augmented with a<br clear="none"> correlation
criteria, and is then routed to a quickfix endpoint. The response is then
converted to a<br clear="none"> JSON-formatted string and sent back to the HTTP
server endpoint to be provided as the web response.</p><p>The Spring
configuration have changed from Camel 2.9 onwards. See further below for
example.</p><h3 id="Quickfix-SpringConfiguration">Spring
Configuration</h3><p><strong>Camel 2.6 - 2.8.x</strong></p><p>The QuickFIX/J
component includes a Spring <code>FactoryBean</code> for configuring the
session settings within a Spring context. A type convert
er for QuickFIX/J session ID strings is also included. The following example
shows a simple configuration of an acceptor and initiator session with default
settings for both
sessions.</p><plain-text-body>{snippet:id=e1|lang=xml|url=camel/branches/camel-2.8.x/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml}</plain-text-body><p><strong>Camel
2.9 onwards</strong></p><p>The QuickFIX/J component includes a
<code>QuickfixjConfiguration</code> class for configuring the session settings.
A type converter for QuickFIX/J session ID strings is also included. The
following example shows a simple configuration of an acceptor and initiator
session with default settings for both
sessions.</p><plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-quickfix/src/test/resources/org/apache/camel/component/quickfixj/QuickfixjSpringTest-context.xml}</plain-text-body><h3
id="Quickfix-Exceptionhandling">Exception handling</
h3><p>QuickFIX/J behavior can be modified if certain exceptions are thrown
during processing of a message. If a <code>RejectLogon</code> exception is
thrown while processing an incoming logon administrative message, then the
logon will be rejected.</p><p>Normally, QuickFIX/J handles the logon process
automatically. However, sometimes an outgoing logon message must be modified to
include credentials required by a FIX counterparty. If the FIX logon message
body is modified when sending a logon message
(EventCategory=<code>AdminMessageSent</code> the modified message will be sent
to the counterparty. It is important that the outgoing logon message is being
processed <em>synchronously</em>. If it is processed asynchronously (on another
thread), the FIX engine will immediately send the unmodified outgoing message
when it's callback method returns.</p><h3
id="Quickfix-FIXSequenceNumberManagement">FIX Sequence Number
Management</h3><p>If an application exception is thrown during <em>synchr
onous</em> exchange processing, this will cause QuickFIX/J to not increment
incoming FIX message sequence numbers and will cause a resend of the
counterparty message. This FIX protocol behavior is primarily intended to
handle <em>transport</em> errors rather than application errors. There are
risks associated with using this mechanism to handle application errors. The
primary risk is that the message will repeatedly cause application errors each
time it's re-received. A better solution is to persist the incoming message
(database, JMS queue) immediately before processing it. This also allows the
application to process messages asynchronously without losing messages when
errors occur.</p><p>Although it's possible to send messages to a FIX session
before it's logged on (the messages will be sent at logon time), it is usually
a better practice to wait until the session is logged on. This eliminates the
required sequence number resynchronization steps at logon. Waiting for session
logon
can be done by setting up a route that processes the
<code>SessionLogon</code> event category and signals the application to start
sending messages.</p><p>See the FIX protocol specifications and the QuickFIX/J
documentation for more details about FIX sequence number management.</p><h3
id="Quickfix-RouteExamples">Route Examples</h3><p>Several examples are included
in the QuickFIX/J component source code (test subdirectories). One of these
examples implements a trival trade excecution simulation. The example defines
an application component that uses the URI scheme "trade-executor".</p><p>The
following route receives messages for the trade executor session and passes
application messages to the trade executor
component.</p><plain-text-body>from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:MARKET->TRADER").
filter(header(QuickfixjEndpoint.EVENT_CATEGORY_KEY).isEqualTo(QuickfixjEventCategory.AppMessageReceived)).
- to("trade-executor:market");
-]]></script>
-</div></div><p>The trade executor component generates messages that are routed
back to the trade session. The session ID must be set in the FIX message itself
since no session ID is specified in the endpoint URI.</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("trade-executor:market").to("quickfix:examples/inprocess.cfg");
-]]></script>
-</div></div><p>The trader session consumes execution report messages from the
market and processes them.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:TRADER->MARKET").
+ to("trade-executor:market");
+</plain-text-body><p>The trade executor component generates messages that are
routed back to the trade session. The session ID must be set in the FIX message
itself since no session ID is specified in the endpoint
URI.</p><plain-text-body>from("trade-executor:market").to("quickfix:examples/inprocess.cfg");
+</plain-text-body><p>The trader session consumes execution report messages
from the market and processes
them.</p><plain-text-body>from("quickfix:examples/inprocess.cfg?sessionID=FIX.4.2:TRADER->MARKET").
filter(header(QuickfixjEndpoint.MESSAGE_TYPE_KEY).isEqualTo(MsgType.EXECUTION_REPORT)).
bean(new MyTradeExecutionProcessor());
-]]></script>
-</div></div><h2 id="Quickfix-QuickFIX/JComponentPriortoCamel2.5">QuickFIX/J
Component Prior to Camel 2.5</h2><p>The <strong>quickfix</strong> component is
an implementation of the <a shape="rect" class="external-link"
href="http://www.quickfixj.org/" rel="nofollow">QuickFIX/J</a> engine for Java
. This engine allows to connect to a FIX server which is used to exchange
financial messages according to <a shape="rect" class="external-link"
href="http://www.fixprotocol.org/" rel="nofollow">FIX protocol</a>
standard.</p><p><strong>Note:</strong> The component can be used to
send/receives messages to a FIX server.</p><h3 id="Quickfix-URIformat.1">URI
format</h3><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[quickfix-server:config file
+</plain-text-body><h2
id="Quickfix-QuickFIX/JComponentPriortoCamel2.5">QuickFIX/J Component Prior to
Camel 2.5</h2><p>The <strong>quickfix</strong> component is an implementation
of the <a shape="rect" class="external-link" href="http://www.quickfixj.org/"
rel="nofollow">QuickFIX/J</a> engine for Java . This engine allows to connect
to a FIX server which is used to exchange financial messages according to <a
shape="rect" class="external-link" href="http://www.fixprotocol.org/"
rel="nofollow">FIX protocol</a> standard.</p><p><strong>Note:</strong> The
component can be used to send/receives messages to a FIX server.</p><h3
id="Quickfix-URIformat.1">URI
format</h3><plain-text-body>quickfix-server:config file
quickfix-client:config file
-]]></script>
-</div></div><p>Where <strong>config file</strong> is the location (in your
classpath) of the quickfix configuration file used to configure the engine at
the startup.</p><p><strong>Note:</strong> Information about parameters
available for quickfix can be found on <a shape="rect" class="external-link"
href="http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html"
rel="nofollow">QuickFIX/J</a> web site.</p><p>The quickfix-server endpoint must
be used to receive from FIX server FIX messages and quickfix-client endpoint in
the case that you want to send messages to a FIX gateway.</p><h3
id="Quickfix-Exchangedataformat">Exchange data format</h3><p>The QuickFIX/J
engine is like CXF component a messaging bus using MINA as protocol layer to
create the socket connection with the FIX engine gateway.</p><p>When QuickFIX/J
engine receives a message, then it create a QuickFix.Message instance which is
next received by the camel endpoint. This object is a 'mapping object' created
fr
om a FIX message formatted initially as a collection of key value pairs data.
You can use this object or you can use the method 'toString' to retrieve the
original FIX message.</p><p><strong>Note:</strong> Alternatively, you can use
<a shape="rect" href="bindy.html">camel bindy dataformat</a> to transform the
FIX message into your own java POJO</p><p>When a message must be send to
QuickFix, then you must create a QuickFix.Message instance.</p><h3
id="Quickfix-Lazycreatingengines">Lazy creating engines</h3><p>From
<strong>Camel 2.12.3</strong> onwards, you can configure the QuickFixComponent
to lazy create and start the engines, which then only start these on-demand.
For example you can use this when you have multiple Camel applications in a
cluster with master/slaves. And want the slaves to be standby.</p><h3
id="Quickfix-Samples">Samples</h3><p>Direction : to FIX gateway</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<route>
- <from uri="activemq:queue:fix"/>
- <bean ref="fixService" method="createFixMessage"/>
// bean method in charge to transform message into a QuickFix.Message
- <to uri="quickfix-client:META-INF/quickfix/client.cfg"/> //
Quickfix engine who will send the FIX messages to the gateway
+</plain-text-body><p>Where <strong>config file</strong> is the location (in
your classpath) of the quickfix configuration file used to configure the engine
at the startup.</p><p><strong>Note:</strong> Information about parameters
available for quickfix can be found on <a shape="rect" class="external-link"
href="http://www.quickfixj.org/quickfixj/usermanual/usage/configuration.html"
rel="nofollow">QuickFIX/J</a> web site.</p><p>The quickfix-server endpoint must
be used to receive from FIX server FIX messages and quickfix-client endpoint in
the case that you want to send messages to a FIX gateway.</p><h3
id="Quickfix-Exchangedataformat">Exchange data format</h3><p>The QuickFIX/J
engine is like CXF component a messaging bus using MINA as protocol layer to
create the socket connection with the FIX engine gateway.</p><p>When QuickFIX/J
engine receives a message, then it create a QuickFix.Message instance which is
next received by the camel endpoint. This object is a 'mapping object' crea
ted from a FIX message formatted initially as a collection of key value pairs
data. You can use this object or you can use the method 'toString' to retrieve
the original FIX message.</p><p><strong>Note:</strong> Alternatively, you can
use <a shape="rect" href="bindy.html">camel bindy dataformat</a> to transform
the FIX message into your own java POJO</p><p>When a message must be send to
QuickFix, then you must create a QuickFix.Message instance.</p><h3
id="Quickfix-Lazycreatingengines">Lazy creating engines</h3><p>From
<strong>Camel 2.12.3</strong> onwards, you can configure the QuickFixComponent
to lazy create and start the engines, which then only start these on-demand.
For example you can use this when you have multiple Camel applications in a
cluster with master/slaves. And want the slaves to be standby.</p><h3
id="Quickfix-Samples">Samples</h3><p>Direction : to FIX gateway</p><parameter
ac:name="">xml</parameter><plain-text-body><route>
+ <from uri="activemq:queue:fix"/>
+ <bean ref="fixService" method="createFixMessage"/> // bean method in
charge to transform message into a QuickFix.Message
+ <to uri="quickfix-client:META-INF/quickfix/client.cfg"/> // Quickfix
engine who will send the FIX messages to the gateway
</route>
-]]></script>
-</div></div><p>Direction : from FIX gateway</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<route>
- <from uri="quickfix-server:META-INF/quickfix/server.cfg"/>
// QuickFix engine who will receive the message from FIX gateway
- <bean ref="fixService" method="parseFixMessage"/>
// bean method parsing the QuickFix.Message
- <to uri="uri="activemq:queue:fix"/>"
+</plain-text-body><p>Direction : from FIX gateway</p><parameter
ac:name="">xml</parameter><plain-text-body><route>
+ <from uri="quickfix-server:META-INF/quickfix/server.cfg"/> // QuickFix
engine who will receive the message from FIX gateway
+ <bean ref="fixService" method="parseFixMessage"/> // bean method
parsing the QuickFix.Message
+ <to uri="uri="activemq:queue:fix"/>"
</route>
-]]></script>
-</div></div><p></p><h3 id="Quickfix-SeeAlso">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring
Camel</a></li><li><a shape="rect"
href="component.html">Component</a></li><li><a shape="rect"
href="endpoint.html">Endpoint</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li></ul></div>
+</plain-text-body><p><parameter ac:name=""><a shape="rect"
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p></div>
</td>
<td valign="top">
<div class="navigation">