activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Gomes <jgo...@apache.org>
Subject Re: [DISCUSS] Rework NMS.AMQP
Date Tue, 14 Feb 2017 22:03:29 GMT
Hi Duane,

Thank you very much for this proposal.  I think it sounds great.  The
current NMS.AMQP is just a wrapper around another library.  If we could
have a full native implementation of the NMS API using AMQP, that would be
much better.

As you point out, the licensing seems to be compatible, but maybe a quick
review from Apache legal might be a good idea since the intent is to
re-integrate it into the NMS codebase as an official project.

The NMS code is in Subversion, and not in Git.  Here is the repository URL:
https://svn.apache.org/repos/asf/activemq/activemq-dotnet/Apache.NMS.AMQP/trunk.
It does not need to be ported to Git in order to create a new AMQP provider
implementation.

Please let me know how I can help with this effort.

Best,
Jim


On Tue, Feb 14, 2017 at 12:53 PM Clebert Suconic <clebert.suconic@gmail.com>
wrote:

> wow.. IMHO it sounds an awesome idea...
>
>
> you could also include ActiveMQ Artemis to the list of brokers.
>
>
> I have been doing some work around AMQP on Artemis, and I also wrote a
> blog on how to use the AMQP lite:
> https://blogs.apache.org/activemq/entry/using-net-libraries-with-activemq
>
>
> Using the NMS seems like a great Idea, as it would represent an
> independent layer, like JMS is now, and it could make migration from
> OpenWire .NET clients into AMQP an easy transition?
>
>
> Do you have an idea on how much effort it would take...  do you have
> any ideas for the initial implementation already?
>
>
>
> I"m not sure where is the current repo for NMS. Maybe still in SVN? I
> couldn't find a git repo for it yet. If that's the case the first step
> would be to translate it into a git repo. We could start with pull
> requests.
>
> On Tue, Feb 14, 2017 at 2:32 PM, Duane Pauls <duane.pauls@gmail.com>
> wrote:
> > Hello,
> >
> > I'm relatively new to the ActiveMQ community, but I've been watching this
> > list for the last little while and would like to propose some rework to
> the
> > NMS.AMQP API.
> >
> > I'm interested in any feedback you folks may have.  Thanks in advance!
> >
> >
> >
> > NMS.AMQP REWORK PROPOSAL
> >
> >
> > Abstract
> >
> > A pure .NET implementation of NMS[1] using the AMQP .NET Lite API[2].
> >
> >
> > Proposal
> >
> > This proposal is to rework the ActiveMQ NMS.AMQP codebase in order to
> > achieve:
> > 1. A pure .NET implementation of the NMS API using the AMQP 1.0[3]
> > wireline protocol as a transport. To do this, the AMQP .NET Lite API
> > will be used.
> > 2. Interoperability with other APIs following the AMQP JMS Mapping
> > Specification[4], namely Qpid JMS[5].
> > 3. Interoperability via AMQP 1.0 brokers such as ActiveMQ[6], the Qpid
> > C++ broker[7], and the Qpid broker for Java[8].
> >
> > While we would be open to alternate approaches, we propose starting work
> > on a development branch within the ActiveMQ NMS.AMQP repository[9], then
> > replace the contents of the trunk with the branch when the branch has
> > reached an appropriate level of maturity.
> >
> > There are two major components changing:
> > 1. The underlying transport API providing AMQP capabilities.
> > 2. The mapping between the NMS API and the underlying AMQP API.
> >
> > Therefore, there is little of the existing implementation that could be
> > reused. Hence the proposal is replace the implementation rather than
> > refactor it.
> >
> >
> > Background
> >
> > AMQP 1.0[3] is a standard wireline protocol. There are already open
> > source APIs that expose native AMQP 1.0 concepts directly:
> > 1. Apache Qpid Proton[10], which is available for a number of different
> > languages.
> > 2. AMQP .Net Lite[2], which is a pure .NET API implementation. AMQP .Net
> > Lite is not an Apache project, but it is licensed under the Apache 2.0
> > license.
> >
> > There are also open source APIs that implement other messaging APIs, and
> > map the APIs concepts to the AMQP 1.0 protocol. Examples of such APIs
> > are:
> > 1. Apache Qpid JMS[5], a JMS implementation that follows the AMQP JMS
> > Mapping Specification[4].
> > 2. The existing Apache ActiveMQ NMS.AMQP[9], an NMS implementation using
> > .NET-wrapped native code, and using a different API to protocol mapping
> > than Qpid JMS.
> >
> >
> > Rationale
> >
> > AMQP 1.0[3] is an attractive technology choice for deploying middleware
> > solutions. As a standardized protocol, it offers operational flexibility
> > for middleware solutions. For example, if it is desired change the AMQP
> > 1.0 provider, this is much more readily achieved with minimal impact to
> > applications compared to changing a provider when applications use a
> > vendor-specific API and/or protocol.
> >
> > Many software architects and developers are familiar with topic and
> > queue based messaging. The prevalence of Message Oriented Middleware
> > offerings such as IBM MQ, Amazon Simple Queue Service, and JMS
> > demonstrate this. In addition, .NET is a very popular software
> > framework. However, AMQP 1.0 is a relative newcomer to the middleware
> > marketspace. A vibrant ecosystem of open source APIs is seen as a vital
> > component to the future success of the technology.
> >
> > Therefore, an NMS API using AMQP 1.0 is an important piece of the AMQP
> > 1.0 ecosystem. Implementing pure .NET libraries will make it easier to
> > deploy solutions. By using a standardized API to protocol mapping,
> > greater interoperability will be achieved. Overall, this project seeks
> > to make AMQP 1.0 more accessible to architects and developers. This API
> > complements rather than competes with APIs such as Qpid Proton and AMQP
> > .NET Lite, both excellent options for those wishing to embrace AMQP 1.0
> > messaging paradigm directly.
> >
> >
> > External Dependencies
> >
> > There are two external dependencies for this project:
> > 1. NMS[1], an Apache project.
> > 2. AMQP .NET Lite[2], an open source project licensed under the Apache
> > 2.0 license.
> >
> > Since both dependencies use an Apache license, there are no issues with
> > respect to the licensing of the project's dependencies.
> >
> >
> > References
> >
> > [1] Apache ActiveMQ NMS API: http://activemq.apache.org/nms/
> > [2] AMQP .NET Lite API: https://github.com/Azure/amqpnetlite/
> > [3] AMQP Version 1.0:
> >   http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf
> > [4] AMQP JMS Mapping Version 1.0:
> >   https://www.oasis-open.org/committees/download.php/56418/
> > [5] Apache Qpid JMS: https://qpid.apache.org/components/jms/
> > [6] Apache ActiveMQ: http://activemq.apache.org/
> > [7] Apache Qpid C++ Broker:
> >   http://qpid.apache.org/components/cpp-broker/index.html
> > [8] Apache Qpid Broker for Java:
> >   http://qpid.apache.org/components/java-broker/index.html
> > [9] Existing Apache NMS.AMQP Repository:
> >   http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.AMQP/
> > [10] Apache Qpid Proton: http://qpid.apache.org/proton/
> >
> >
> >
> > Cheers,
> > Duane
>
>
>
> --
> Clebert Suconic
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message