<html>
<head>
<title>Apache Qpid C++ 0.24 Installation Notes</title>
</head>
<body>
<H1>Apache Qpid C++ 0.24 Installation Notes</H1>

<p>Thank you for installing Apache Qpid version 0.24 for Windows.
If the requisite features were installed, you can now run a broker,
use the example programs, and design your own messaging programs while
reading the Qpid C++ API reference documentation.</p>

<H2>Running a Message Broker</H2>
<p>
In AMQP, programs that send and receive messages are clients. The agents
that route and queue messages to and from clients are brokers. In order to
use any Qpid-based messaging program there must be at least one broker
running which the client(s) can communicate with. The broker need not execute
on the same system as the client, but it must be reachable using TCP/IP.</p>

<p>The broker executable is installed in the <code>bin</code> subdirectory
of your Qpid installation directory. The broker program is
<code>qpidd.exe</code>. The installation procedure adds the Qpid bin
directory to the PATH environment variable, so the simplest way to experiment
with the broker is to open a command prompt window and execute the broker:
<pre>
qpidd
</pre>
A small amount of information will be displayed to let you know the broker
is running and listening for client connections.</p>
<p>To stop the broker, you can simply type <code>^C</code> in the
command prompt window where the broker is running.</p>

<p>For a full list of options for the broker, you can use the
<code>--help</code> option.</p>

<H2>Using the Example Programs</H2>

<p>If you installed the example programs, a new environment variable was
set. <code>QPID_ROOT</code> refers to the Qpid installation directory. The
Visual Studio project files located in the examples area refer to
<code>QPID_ROOT</code> to locate both header files and library files.</p>

<p>The example programs are located in the <code>examples</code> subdirectory
of the Qpid installation directory. There are a number of examples, each with
its own subdirectory under <code>examples</code>. You can use the examples to
<ul>
<li>Study to learn Qpid programming techniques you may want to use</li>
<li>Build and run to observe and test Qpid features</li>
</ul>
Each example's directory contains source code and Visual Studio 2008 project
files you can use to build the examples.</p>

<H2>Reading the C++ API Reference Documentation</H2>
<p>The C++ API reference documentation is HTML and can be viewed using
your web browser. It is located in the <code>docs\api\html</code> subdirectory
of the installation directory, but there is also a shortcut to the
documentation in <i>Start > All Programs > Apache Qpid > Qpid C++ Reference
Documentation</i>. Selecting that menu item will launch the documentation's
main page in your default web browser.</p>

<H2>Complete Source Code is Available</H2>
<p>If you wish to view Qpid's source code, please visit
<a href="http://qpid.apache.org/download.html">
http://qpid.apache.org/download.html</a>. The source components used to build
this installed kit are "C++ broker &amp; client" and "C# (.NET, WCF) WCF
channel (C++ Broker Compatible)."</p>

<H1>Notes</H1>
<p>Please read the following sections for important notes regarding this
release.</p>

<H2>CLFS-Based Broker Persistence Module</H2>
<p>This release includes a second persistence module. The broker can use this
module to facilitate durable queues, exchanges, bindings, configuration, and
messages. The new persistence module, like the SQL-based store introduced in
Qpid 0.6, uses SQL Server Express (or SQL Server) 2005 or newer. However, it
also used Common Log File System (CLFS) to store message and transaction-related
information. CLFS and, thus, the new store, is available on Windows Vista and
Server 2005 and newer.
The persistence module is a Qpid broker plugin. It is not loaded by
default; therefore, to gain support for durable items the persistence plugin
must be loaded into the broker. This can be done using the
<code>--load-module</code> option to load the needed plugins. For example:
<pre>
cd "C:\Program Files\Apache\qpidc-0.24"
qpidd.exe --load-module plugins\broker\store.dll --load-module plugins\broker\msclfs_store.dll
</pre>
The <code>--load-module</code> option can also take a full path. The option
can also be included in the broker configuration file. A sample is located
in the <code>conf\qpidd.conf</code> file under the installation directory.</p>

<H1>For More Information</H1>
<p>For more information on Apache Qpid, please visit the web site
<a href="http://qpid.apache.org/">http://qpid.apache.org/</a>.</p>

<p>The Qpid site contains more information about Qpid and AMQP as well as
directions for joining and reading the Qpid-related email lists.</p>
</body>
</html>
