make explicit reference to example directories for each quickstart.

This commit is contained in:
markpollack
2009-06-20 01:33:18 +00:00
parent 04ac4aec80
commit 8d5c858dde
10 changed files with 2748 additions and 2661 deletions

View File

@@ -16,7 +16,13 @@
* limitations under the License.
*/
-->
<chapter xml:id="msmq-quickstart" xmlns="http://docbook.org/ns/docbook" version="5">
<chapter version="5" xml:id="msmq-quickstart"
xmlns="http://docbook.org/ns/docbook"
xmlns:ns6="http://www.w3.org/1999/xlink"
xmlns:ns5="http://www.w3.org/1999/xhtml"
xmlns:ns4="http://www.w3.org/2000/svg"
xmlns:ns3="http://www.w3.org/1998/Math/MathML"
xmlns:ns="http://docbook.org/ns/docbook">
<title>MSMQ QuickStart</title>
<section>
@@ -27,11 +33,17 @@
follows the same basic approach as in the <link
linkend="nms-quickstart">NMS QuickStart</link> but is adapted as need for
use with MSMQ. Please read the introduction in that chapter to get an
overview of the system. </para>
overview of the system.</para>
<para>When there is direct overlap in functionality between the MSMQ and
NMS quickstart a reference to the appropriate section in the NMS
QuickStart documentation is given.</para>
<note>
<para>To follow this MSMQ QuickStart load the solution file found in the
directory
<literal>&lt;spring-install-dir&gt;\examples\Spring\Spring.MsmqQuickStart</literal></para>
</note>
</section>
<section>
@@ -39,20 +51,18 @@
<para>To communicate between th client and server a pair of queues will be
used. Messages sent from the client to the server will use the
transactional queue named
<literal>.\Private$\request.txqueue</literal>. Messages sent from the
server to the client will use the transactional queue
<literal>.\Private$\response.joe.txqueue</literal>. The queue for
transactional queue named <literal>.\Private$\request.txqueue</literal>.
Messages sent from the server to the client will use the transactional
queue <literal>.\Private$\response.joe.txqueue</literal>. The queue for
messages that cannot be processed, so called 'poison messages' will be
sent to the queue <literal>.\Private$\dead.queue</literal>. You can
create these queues using the computer management administration console.
Private queues are used to simplify the application setup
requirements.</para>
sent to the queue <literal>.\Private$\dead.queue</literal>. You can create
these queues using the computer management administration console. Private
queues are used to simplify the application setup requirements.</para>
<para>Since MSMQ does not natively support the publish-subscribe messaging
style as in other messaging systems, Apache MQ, IBM Websphere MQ, TIBCO
EMS, the market data information is sent on the same queue as the
responses from the server to the client for trade requests.. </para>
responses from the server to the client for trade requests..</para>
</section>
<section>
@@ -112,10 +122,10 @@
<title>Messaging Infrastructure</title>
<para>The implementations of the gateway interfaces inherit from Spring's
helper class <literal>MessageQueueGatewaySupport</literal> in order to
get easy access to a <literal>MessageQueueTemplate</literal> for
sending. The implementation of the <literal>IStockService</literal>
interface is shown below</para>
helper class <literal>MessageQueueGatewaySupport</literal> in order to get
easy access to a <literal>MessageQueueTemplate</literal> for sending. The
implementation of the <literal>IStockService</literal> interface is shown
below</para>
<programlisting language="csharp">public class <classname>MsmqStockServiceGateway</classname> : <classname>MessageQueueGatewaySupport</classname>, <classname>IStockService</classname>
{
@@ -145,17 +155,16 @@
}</programlisting>
<para>The <literal>Send</literal> method is using
MessageQueueTemplate's <literal>ConvertAndSend(object obj,
MessagePostProcessorDelegate messagePostProcessorDelegate)</literal>
method. The anonymous delegate allows you to modify the message
properties, such as ResponseQueue and AppSpecific after the message has
been converted from an object but before it has been sent. The use of an
anonymous delegate allows makes it very easy to apply any post processing
logic to the converted message.</para>
<para>The <literal>Send</literal> method is using MessageQueueTemplate's
<literal>ConvertAndSend(object obj, MessagePostProcessorDelegate
messagePostProcessorDelegate)</literal> method. The anonymous delegate
allows you to modify the message properties, such as ResponseQueue and
AppSpecific after the message has been converted from an object but before
it has been sent. The use of an anonymous delegate allows makes it very
easy to apply any post processing logic to the converted message.</para>
<para>The configuration for <literal>MsmqStockServiceGateway</literal>
and all its dependencies is shown below, highlighting important dependency
<para>The configuration for <literal>MsmqStockServiceGateway</literal> and
all its dependencies is shown below, highlighting important dependency
links.</para>
<programlisting language="myxml">&lt;object name="stockServiceGateway" type="Spring.MsmqQuickStart.Client.Gateways.MsmqStockServiceGateway, Spring.MsmqQuickStart.Client"&gt;
@@ -190,9 +199,9 @@
<para>Since the client also needs to listen to incoming messages on the
responseTxQueue, a
<literal>TransactionalMessageListenerContainer</literal> is
configured. The configuration for the message listener container and all
its dependencies is shown below, highlighting important dependency
<literal>TransactionalMessageListenerContainer</literal> is configured.
The configuration for the message listener container and all its
dependencies is shown below, highlighting important dependency
links.</para>
<programlisting language="myxml">&lt;!-- MSMQ Transaction Manager --&gt;
@@ -203,7 +212,8 @@
&lt;property name="MessageQueueObjectName" value="responseTxQueue"/&gt;
&lt;property name="PlatformTransactionManager" ref="messageQueueTransactionManager"/&gt;
&lt;property name="MessageListener" ref="<emphasis role="bold">messageListenerAdapter</emphasis>"/&gt;
&lt;property name="MessageTransactionExceptionHandler" ref="<emphasis role="bold">sendToQueueExceptionHandler</emphasis>"/&gt;
&lt;property name="MessageTransactionExceptionHandler" ref="<emphasis
role="bold">sendToQueueExceptionHandler</emphasis>"/&gt;
&lt;/object&gt;
@@ -226,12 +236,12 @@
<para>A similar configuration is used on the server to configure the class
<literal>Spring.MsmqQuickStart.Server.Gateways.MarketDataServiceGateway
</literal>that implements the <literal>IMarketDataService</literal>
interface and a
<literal>TransactionalMessageListenerContainer</literal> to process
messages on the requestTxQueue. You can increase the number of processing
thread in the <literal>TransactionalMessageListenerContainer</literal>
by setting the property <literal>MaxConcurrentListeners</literal>, the
default value is 1.</para>
interface and a <literal>TransactionalMessageListenerContainer</literal>
to process messages on the requestTxQueue. You can increase the number of
processing thread in the
<literal>TransactionalMessageListenerContainer</literal> by setting the
property <literal>MaxConcurrentListeners</literal>, the default value is
1.</para>
</section>
<section>
@@ -247,10 +257,10 @@
<mediaobject>
<imageobject>
<imagedata fileref="images/nms-quickstart-gui.png" />
<imagedata fileref="images/nms-quickstart-gui.png"></imagedata>
</imageobject>
</mediaobject>
<para></para>
</section>
</chapter>
</chapter>