======================================================================= * Apache.NMS.AMQP : Apache NMS for AMQP Client Library * Initial Release Notes ======================================================================= 1.0 Welcome Welcome to Apache NMS AMQP! This NMS Provider will connect to the AMQP messaging protocol. Versions Amqp1.0 and Amqp0.10 are supported. NMS applications using this provider may communicate with Amqp Brokers such as Apache ActiveMQ and Apache Qpid qpidd, and messaging infrastructure such as Apache Qpid Dispatch Router. 2.0 Implementation Overview The AMQP Provider leverages the interop binding "Apache Qpid .NET Binding for C++ Messaging". The .NET Binding is an interop layer that connects .NET programs to the Qpid native C++ protocol engine libraries. The general architecture is: +----------------------------+ | NMS Application | | | +--------------+-------------+ | V +----------------------------+ | NMS AMQP Provider | | Apache.NMS.AMQP.dll | +--------------+-------------+ | managed V (.NET) +-------------------------------+ ::::::::::::::::::::::| Qpid Interop Binding |:::::::::::: unmanaged | org.apache.qpid.messaging.dll | (Native Win32/64) +-------------+-----------------+ | V +----------------------------------+ | Qpid C++ Messaging Libraries | | qpid*.dll | +--------+--------------+----------+ | | V | +-----------------+ | | Boost Libraries | | +--------+--------+ | | | V V +---------------------------------+ | MSVC Runtime Libraries | +---------------------------------+ 3.0 Getting Started 3.1 Installing Apache Qpid vendor files In order to use the AMQP Provider your application must have the Apache Qpid native and supporting libraries available on the path. These files are installed automatically during the nant installation of the Apache.Qpid vendor kit. 3.2 Selecting the correct Apache Qpid vendor files The Apache Qpid vendor files are shipped in two versions: * .NET 2.0 Compiled with Visual Studio 2008 * .NET 4.0 Compiled with Visual Studio 2010 Each of these kits is built for the 32-bit x86 platform in both Debug and Release configurations. A typical kit holds: * The Apache Qpid interop library org.apache.qpid.messaging.dll * Apache Qpid/Proton library files qpid-protond.dll qpidclientd.dll qpidcommond.dll qpidmessagingd.dll qpidtypesd.dll * Boost library files boost_chrono-vc100-mt-gd-1_47.dll boost_date_time-vc100-mt-gd-1_47.dll boost_program_options-vc100-mt-gd-1_47.dll boost_system-vc100-mt-gd-1_47.dll boost_thread-vc100-mt-gd-1_47.dll 3.3 Building your Application A HelloWorld application is included in the Apache.NMS.AMQP development tree to get users off to a quick start. This project selects: Visual Studio : 2010 Configuration : Debug .NET Framework : 4.0 Platform : AnyCPU HelloWorld builds and runs on both 32-bit x86 and 64-bit x64 systems as long as the base project is built with the AnyCPU or the x64 Platform. The Apache Qpid subsystem will not load under .NET projects that specify the x64 Platform. 4.0 Using the Apache.NMS.AMQP Provider 4.1 Creating AMQP Connections Connections to AMQP brokers and endpoints are controlled by arguments to the ConnectionFactory constructor. By default connections use protocol "amqp1.0". Uri connecturi = new Uri("amqp:tcp:localhost:5672"); string clientID = "abc"; Hashtable options = new Hashtable(); options["username"] = "guest"; options["password"] = "secret"; options["protocol"] = "amqp1.0"; // or "amqp0-10" IConnectionFactory factory = new NMSConnectionFactory(connecturi, clientID, options); In this release connection options are passed through an option table and not through the connect URI/URL. More information about connection options is available at: http://qpid.apache.org/components/programming/book/connection-options.html 5.0 Future Considerations * 64-bit x64 Apache Qpid vendor kit * Support for more robust object message formats * Transactions and message durability * Unit test/system tests