activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chuck Rolke (JIRA)" <>
Subject [jira] [Commented] (AMQNET-454) Add Apache Qpid provider to NMS
Date Wed, 13 Aug 2014 19:44:12 GMT


Chuck Rolke commented on AMQNET-454:

Hi Jim,

Thanks for your attention to my checkins. Maybe you could advise me on how best to proceed
with my unmanaged content.

h4. Populating \lib with Apache Qpid vendor files

There is an issue with copying the Apache Qpid vendor files from the local .nant repo into
lib\net-2.0 or lib\net-4.0. For net-2.0 or net-4.0 the Qpid vendor files are delivered in
debug and release sets. 
h5. Distinguishing debug from release
* qpid library file names have a "d" suffix. 
* boost library file names have an extra "-gd" embedded in them.
* The library binding org.apache.qpid.messaging.dll files have the *identical name* for debug
and release.

h5. Distingushing net-2.0 from net-4.0
* qpid library file names are the same net-2.0 and net-4.0
* boost library file names have the vc compiler version embedded in them:
** net-2.0 identified by "-vc90"
** net-4.0 identified by "-vc100"
* The library binding org.apache.qpid.messaging.dll files have the *identical name* for net-2.0
and net-4.0

It would be best if the net-2.0/net-4.0 debug/release files could be kept in four directories
in \lib. Without debug and release folders this isn't possible and the debug and release files
wind up on top of each other. This isn't a huge issue until the release version of org.apache.qpid.messaging.dll
overwrites the debug version. As soon as the debug version of code is rebuilt in the \build
folder the release version of the dll is copied into the build debug folder and nothing works
after that. The .NET runtime error messages are not helpful in diagnosing the issue: it says
it can't load a dll but it does not explain why.

h4. Populating \build with libraries from \lib

Scripts must account for the file naming variations so that all the desired files wind up
in the proper places in build. It does not hurt to have the unmanaged debug and release libraries
both installed in the build folder but care must be taken not to install the wrong build variant
of org.apache.qpid.messaging.dll.

h4. How to proceed

I notice that products like NUnit dodge this issue by having the same file in the \debug and
\release in the .nant local repo. I believe that org.apache.qpid could do the same thing.
If the same file set were in two places in the local repo then there would never be a conflict
in the \lib folders nor in the \build folders. Release versions of products built on top of
debug versions of the qpid unmanged code would still work correctly.

There is still a conflict between the net-2.0 and the net-4.0 versions of boost file names
but that can be solved by adding the other names to the file copy list added in

I'll give this a try before my next commit and see how it goes. Please reply if you have ideas
on how to proceed.

> Add Apache Qpid provider to NMS
> -------------------------------
>                 Key: AMQNET-454
>                 URL:
>             Project: ActiveMQ .Net
>          Issue Type: New Feature
>          Components: NMS
>    Affects Versions: 1.6.0
>            Reporter: Chuck Rolke
>            Assignee: Jim Gomes
>         Attachments: Apache.NMS.AMQP-21-Add-Map-Text-Message-tests.patch, Apache.NMS.AMQP-22-add-more-tests.patch,
Apache.NMS.AMQP-23a-MessageDeliveryTest.cs.patch, Apache.NMS.AMQP-23b-MSConnectionFactoryTest.cs.patch,
Apache.NMS.AMQP-23c-NmsConsoleTracer.cs.patch, Apache.NMS.AMQP-23d-addTraceStatements.patch,
Apache.NMS.AMQP-23e-addFilesToTestProject.patch, Apache.NMS.AMQP-24-tidy-up.patch, Apache.NMS.AMQP-25-use-qpid-0.28.patch,
Apache.NMS.AMQP-26-hook-in-session-ack.patch, Apache.NMS.AMQP-27-nant-unmanaged-copy.patch,
Apache.NMS.AMQP-28-close-qpid-sender-receiver.patch, Apache.NMS.AMQP-Add-message-cloning-19.patch,
Apache.NMS.AMQP-add-connection-property-table-17.patch, Apache.NMS.AMQP-add-hello-world-example-11.patch,
Apache.NMS.AMQP-add-hello-world-example-retry-12.patch, Apache.NMS.AMQP-add-hello-world-to-vs2008-18.patch,
Apache.NMS.AMQP-add-message-conversions-06.patch, Apache.NMS.AMQP-add-message-test-20.patch,
Apache.NMS.AMQP-add-topic-05.patch, Apache.NMS.AMQP-connectionProperties-07.patch, Apache.NMS.AMQP-copyrights-conn-str-fix-09.patch,
Apache.NMS.AMQP-fix-destination-to-use-qpid-address-10.patch, Apache.NMS.AMQP-fix-helloworld-13.patch,
Apache.NMS.AMQP-fix-list-message-body-15.patch, Apache.NMS.AMQP-fix-map-message-body-14.patch,
Apache.NMS.AMQP-fix-replyTo-and-receive-timeouts-16.patch, Apache.NMS.AMQP-object-lifecycle-04.patch,
Apache.NMS.AMQP-provider-configs-03.patch, Apache.NMS.AMQP-qpid-object-lifecycle-02.patch,
Apache.NMS.AMQP-set-connection-credentials-08.patch, RELEASE.txt, vendor-QPid-nant-01.patch
> NMS includes various providers ActiveMQ, STOMP, MSMQ, EMS, and WCF. This issue proposes
to add [Apache Qpid|] as another provider.
> Qpid has a [Messaging .NET Binding|]
that is layered on top of the native C++ Qpid Messaging client. The Qpid .NET binding is attractive
as the hook for tying in Qpid as an NMS provider.
> The proposed NMS provider supports [AMQP 1.0|] by including
[Qpid Proton|] libraries.
> From a high level this addition to Active.NMS would consist of two parts
> * Add Qpid as a vendor kit. This includes both the Qpid .NET Binding and Qpid Proton
in a single kit.
> * Add the new provider with code linking NMS to Qpid

This message was sent by Atlassian JIRA

View raw message