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.pa...@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

Reply via email to